c# ado.net問題

2010-04-05 4:29 am
請教以下程式碼應如何修改才可執行.謝謝
MyConnect = new SqlConnection("server=xxxx;database=中文北風;uid=sa;pwd=xxxx");
string Updatecmd = "update 產品 set 產品編號=@Item_num,,品名=@Name,價錢=@Price where 產品編號=@Item_num";
MyConnect.Open();
SqlCommand MyCommand = new SqlCommand(Updatecmd, MyConnect);

MyCommand.Parameters.Add("@Item_num", SqlDbType.Int).Value = Convert.ToInt32(TextBox1.Text);
MyCommand.Parameters.Add("@Name", SqlDbType.VarChar).Value = TextBox2.Text;
MyCommand.Parameters.Add("@Price", SqlDbType.SmallMoney).Value = Convert.ToInt32(TextBox3.Text);
MyCommand.ExecuteNonQuery();
MyConnect.Close();
更新1:

執行update動作

回答 (1)

2010-04-05 11:07 pm
✔ 最佳答案
Parameter 的語法不對

MyCommand.Parameters.Add("@Item_num", SqlDbType.Int).Value = Convert.ToInt32(TextBox1.Text);
改成
MyCommand.Parameters.Add(new SqlParameter("@Item_num", SqlDbType.Int)).Value = Convert.ToInt32(TextBox1.Text);


MyCommand.Parameters.Add("@Name", SqlDbType.VarChar).Value = TextBox2.Text;
可用長寫
string name = TextBox2.Text;
SqlParameter paraName = new SqlParameter("@Name", SqlDbType.VarChar, 255);
paraName.Value = (name.Length == 0)? DBNull.Value : (object)name;
MyCommand.Parameters.Add(paraName);

MyCommand.Parameters.Add("@Price", SqlDbType.SmallMoney).Value = Convert.ToInt32(TextBox3.Text)
改成
MyCommand.Parameters.Add(new SqlParameter("@Price", SqlDbType.SmallMoney)).Value = Convert.ToDouble(TextBox3.Text)


SQL 指令中有四個 Parameters,如產品編號沒有變就不要更新,只用三個 Parameters。
update 產品 set 品名=@Name,價錢=@Price where 產品編號=@Item_num

如果產品編號有更新,@Item_num 就不能用兩次,必須設兩個不同的 Parameters。
update 產品 set 產品編號=@Item_num_new,品名=@Name,價錢=@Price where 產品編號=@Item_num_old


收錄日期: 2021-04-26 13:39:41
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20100404000015KK08308

檢視 Wayback Machine 備份