0

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

なぜ一方が機能し、もう一方が機能しないのかの違いはわかりません。

4

2 に答える 2

1

param3param2 で ToString を呼び出して値を設定します。param3.Value = param2.ToString();

SqlParameter で ToString を呼び出すと、パラメーター名が返されます。この場合、"@param2" を値ではなく文字列として返します。を使ってみてくださいparam2.Value

または実際にinsertは、あなたが書いたのでparam2.Value = insert;

于 2012-06-22T20:16:19.177 に答える
0

param2 は SqlParameter 型であり、param2.ToString() を param3.value の値として使用しているため、以下の行は正しくないように見えます

SqlParameter param3 = new SqlParameter("@param3", SqlDbType.Text);
    **param3.Value = param2.ToString();**
于 2012-06-22T20:17:44.953 に答える