2012-04-06 3 views
2

Я тщательно искал, но не смог найти способ передать данные столбца в переменную, которую я инициализировал с помощью инструкции SQL UPDATE.Как передать переменные в SqlCommand

Вот фрагмент кода, который вызывает проблему:

int maxId; 
SqlConnection dataConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["RegConnectionString"].ConnectionString) ; 
SqlCommand dataCommand = new SqlCommand("select max(UserID) from Registration", dataConnection) ; 
dataConnection.Open(); 
maxId = Convert.ToInt32(dataCommand.ExecuteScalar()); 
string Id = maxId.ToString(); 

// this next line is not working 
SqlCommand _setvin = new SqlCommand("UPDATE Registration SET VIN=maxId , Voted=0 WHERE UserID=maxId", dataConnection); 
_setvin.ExecuteNonQuery(); 

dataConnection.Close(); 

Пожалуйста, наставит меня о том, как я могу исправить комментируемую строку выше.

ответ

1

Я думаю, что вы пытаетесь сделать это:

var _setvin = new SqlCommand("UPDATE Registration SET VIN = @maxId, Voted = 0 WHERE UserID = @maxId", dataConnection); 
_setvin.Parameters.AddWithValue("@maxId", maxId); 
_setvin.ExecuteNonQuery(); 

Вы должны сначала изменить SQL заявление, чтобы включить параметр для maxId; Я называю это @maxId в вашем SQL. Затем вам нужно указать значение для этого параметра. Это делается с помощью метода Parameters.AddWithValue().

+0

с ур решение его дает ошибки «Неверное имя столбца» .. ** ОБРАТИТЕ ВНИМАНИЕ **, что maxId это имя переменной не имя столбца ... ** и я хотите установить столбец с именем VIN со значением, содержащимся в maxId ** – Sana

+0

@Sana Я использую '@ maxId' как переменную, а не столбец. Здесь используются следующие столбцы: 'VIN',' Voted' и 'UserID'. – Yuck

+0

здесь не работает ... "недопустимое имя столбца 'maxId' исключение попадает в решение u jx дало – Sana

2

Может быть что-то вроде этого:

SqlCommand _setvin = new SqlCommand("UPDATE Registration SET [email protected], Voted=0 WHERE [email protected]", dataConnection); 
_setvin.Parameters.Add("@maxId", SqlDbType.Int).Value = maxId; 
_setvin.ExecuteNonQuery(); 
+0

whats "cmd" здесь – Sana

+0

Извините, что .. Обновлено ответ – Arion

+0

спасибо большое ... :) – Sana

Смежные вопросы