c# ado.net問題

請教以下程式碼應如何修改才可執行.謝謝

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();

Update:

執行update動作

1 Answer

Rating
  • 1 decade ago
    Favorite Answer

    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

Still have questions? Get your answers by asking now.