2012-06-22 48 views
0

我沒有看到爲什麼我的更新語句沒有實際更新。這裏是我有:另一個SQL參數 - UPDATE語句

private void submit_button_Click(object sender, EventArgs e) 
    { 
     string insert = insertbox.Text; 
     SqlParameter param2 = new SqlParameter("@param2", SqlDbType.Text); 
     param2.Value = insert; 
     var connlink = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Program Files\\Microsoft SQL Server\\MSSQL.2\\MSSQL\\Data\\Inserts.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"); 
     var cmd1 = new SqlCommand(@"SELECT qty_onhand FROM [insert] WHERE (Name LIKE @param2)", connlink); 
     connlink.Open(); 
     cmd1.Parameters.Add(param2); 
     var onhand = Convert.ToInt16(cmd1.ExecuteScalar()); 


    // The param2 in the statement passes fine and returns the value into "onhand". 
    // Below, the parameters don't seem to be passed. There is no error but the record isn't updated. 

     int new_onhand = Convert.ToInt16(qtybox1.Text); 
     Convert.ToInt16(onhand); 
     new_onhand = onhand - new_onhand; 
     SqlParameter param1 = new SqlParameter("@param1", SqlDbType.SmallInt); 
     param1.Value = new_onhand; 
     SqlParameter param3 = new SqlParameter("@param3", SqlDbType.Text); 
     param3.Value = param2.ToString(); 
     var cmd = new SqlCommand(@"UPDATE [insert] SET qty_onhand = @param1 WHERE (Name LIKE @param3)", connlink); 
     cmd.CommandType = CommandType.Text; 
     cmd.Parameters.Add(param1); 
     cmd.Parameters.Add(param3); 
     cmd.ExecuteNonQuery(); 
     connlink.Close(); 
    } 

我不確定爲什麼一個工作,其他沒有區別。 param3.Value = param2.ToString();

調用上的SqlParameter ToString返回參數名:

+1

退房這個帖子:http://stackoverflow.com/問題/ 695578​​ /創建表名 - 這是保留字 - 關鍵字在MS - SQL服務器 –

回答

0

下面的線看起來不正確的,因爲我是參數2類型的SqlParameter的,你使用param2.ToString()的值param3.value

SqlParameter param3 = new SqlParameter("@param3", SqlDbType.Text); 
    **param3.Value = param2.ToString();** 
+0

我只是將其更改爲** param3.Value = param2.Value;而且它仍然沒有改變價值。 – marcmiller2007

+0

明白了。它是** cmd.Parameters.AddWithValue **中的一個ToString()。我將它改爲* .Value,它可以工作。感謝你們! – marcmiller2007

+0

咦?在代碼中沒有看到任何'cmd.Parameters.AddWithValue'。 – comecme

1

你通過調用參數2的ToString設置param3值。在我們的例子中,它以字符串的形式返回「@ param2」,而不是它的值。嘗試使用param2.Value

或實際上到insert,因爲你寫了param2.Value = insert;