2010-10-30 1 views
2

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

Единственная проблема заключается в том, что я не могу определить правильный синтаксис Sql для передачи переменных в мою базу данных.

private void button1_Click(object sender, EventArgs e) 
    { 
     int num = 2; 

     using (SqlCeConnection c = new SqlCeConnection(
      Properties.Settings.Default.rentalDataConnectionString)) 
     { 
      c.Open(); 
      string insertString = @"insert into Buildings(name, street, city, state, zip, numUnits) values('name', 'street', 'city', 'state', @num, 332323)"; 
      SqlCeCommand cmd = new SqlCeCommand(insertString, c); 
      cmd.ExecuteNonQuery(); 
      c.Close(); 
     } 

     this.DialogResult = DialogResult.OK; 
    } 

В этом фрагменте кода я использую все статические значения для переменной NUM, которую я пытаюсь передать в базу данных, за исключением.

Во время выполнения я получаю эту ошибку:

A parameter is missing. [ Parameter ordinal = 1 ] 

Благодарности

ответ

6

Добавить параметр в команде перед выполнением:

cmd.Parameters.Add("@num", SqlDbType.Int).Value = num; 
+0

Это именно то, что мне нужно. Спасибо за быстрый ответ. – Rupert

3

Вы не предоставили значение для @ параметр в инструкции SQL. Символ @ указывает вид заполнителя, через который вы передадите значение.

Используйте объект SqlParameter, как показано в this example, чтобы передать значение этому заполнителю/параметру.

Существует множество способов создания объекта параметра (разные перегрузки). Один из способов, если вы придерживаетесь такого же примера, - вставить следующий код после того, как объявлен ваш командный объект:

 // Define a parameter object and its attributes. 
     var numParam = new SqlParameter(); 
     numParam.ParameterName = " @num"; 
     numParam.SqlDbType = SqlDbType.Int; 
     numParam.Value = num; // <<< THIS IS WHERE YOUR NUMERIC VALUE GOES. 

     // Provide the parameter object to your command to use: 
     cmd.Parameters.Add(numParam); 
Смежные вопросы