2010-10-30 71 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 2010-10-30 01:47:49

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); 
相關問題