2011-11-04 25 views
0

我通過使用newxt查詢插入到表中,但我不知道語法用於告知我需要插入的查詢where training_id = & dateSelected &,下面的查詢通過使用靜態值來測試(2)。將選定的dropdownlist值傳遞到where子句

請幫忙。

private void InsertInfo() 
    { 
     var dateSelected = dpDate.SelectedItem.Value; 
     SqlConnection conn = new SqlConnection(GetConnectionString()); 

    string sql = "INSERT INTO personTraining (name,training_id, training,trainingDate,trainingHour, trainingSession)SELECT @Val1,training_id,training,trainingDate,trainingHour,trainingSession FROM tbl_training WHERE training_id = 2"; 
+0

如果擴展你的代碼,以顯示SQL語句的執行方式,以及如何@用於VAL1,我們可以提供更具體的例子。 – pseudocoder

回答

4

使用參數如下:

private void InsertInfo() 
{ 
    var dateSelected = dpDate.SelectedItem.Value; 
    using(SqlConnection conn = new SqlConnection(GetConnectionString())) 
    { 
     conn.Open(); 
     SqlCommand command= conn.CreateCommand(); 
     command.CommandText=  "INSERT INTO personTraining (name,training_id, training,trainingDate,trainingHour, trainingSession)SELECT @Val1,training_id,training,trainingDate,trainingHour,trainingSession FROM tbl_training WHERE training_id = @trainingID"; 

     command.Parameters.AddWithValue("@trainingID",dateSelected); 
     command.ExecuteNonQuery(); 
} 

但是,你有你的查詢另一@Val1參數;我不知道這是從哪裏來的。

+0

感謝它認爲我知道了,所以我們不能再使用.net中的'&'符號了嗎? – user959443

+0

@ user959443:您可以在VB.NET中使用它們來連接字符串,但在構建SQL查詢時這是一個糟糕的做法。不要*那樣做,因爲你會暴露自己的SQL注入攻擊。 – Icarus

+0

好的,謝謝你的幫助 – user959443

0

將另一個Parameter對象添加到SqlCommand對象,並將該參數的值設置爲dateSelected。

+0

嗨,我需要通過所選的id爲where子句而不是值,我該怎麼做?的選擇日期 user959443

+0

您可以將參數放在任何地方。 – drdwilcox

1

這裏是一個基本的例子。我不知道你是如何執行string sql,所以我會使用基於SqlCommand的示例。

SQL:

INSERT INTO personTraining 
(name,training_id, training,trainingDate,trainingHour, trainingSession) 
SELECT @Val1,training_id,training,trainingDate,trainingHour,trainingSession 
FROM tbl_training 
WHERE training_id = @training_id; 

C#:

SqlCommand cmd = conn.CreateCommand(); 
cmd.Parameters.AddWithValue("training_id", dateSelected);