1

グリッドビューからテーブルを更新しようとしています。以下のコードはエラーを表示しませんが、テーブルは更新されません。私の間違いの考えは何ですか?

ページロード用に新しく更新されました。loadstatementは機能しています。データをdatagridviewに入力できますが、ボタンをクリックしてもデータベースを更新できません。問題は残り、エラーはスローされません。更新はありません

   void LoadStatement()
    {
        using (SqlConnection conn = new SqlConnection(sqlConn))
        {
            conn.Open();

            using (SqlDataAdapter da = new SqlDataAdapter(sqlSelect, sqlConn))
            {
                dtbl = new DataTable();
                da.Fill(dtbl);

                dgv1.DataSource = dtbl;
            }
        }

    }

  private void button1_Click(object sender, EventArgs e)
    {
        try
        {
            conn.Open();
            string updCommand = "Update Salary set Salary = "+ds.Tables[0].Rows[0]["Salary"].ToString()+"";
            SqlCommand sqlcmdUpd = new SqlCommand(updCommand, conn);


            da.UpdateCommand = sqlcmdUpd;

            sqlcmdUpd.ExecuteNonQuery();    


            SqlCommandBuilder cmb = new SqlCommandBuilder(da);

            da.Update(ds,sTable);

            lblErrorMsg.Text = "Updated";

        }
        catch (Exception ex)
        {
            lblErrorMsg.Text = ex.Message.ToString();
        }
        finally
        {
            if (conn.State == ConnectionState.Open)
            {
                conn.Close();
            }
        }

    }
4

2 に答える 2

0

1テーブルのみで営業していますか?

これらすべてのコードは必要ないと思います。これを試して:

try
{
    conn.Open();
    SqlCommandBuilder cmb = new SqlCommandBuilder(da);

    da.Update(ds,sTable);

    lblErrorMsg.Text = "Updated";
}

DataGrid のすべての変更は、データベースに正しく保存する必要があります。

于 2013-03-19T08:41:01.547 に答える
0

そのようなコーディングは絶対にしないでください。

常に使用しますparameterized queries。このコードはSQL Injection攻撃に対してオープンです。

string updCommand = "Update Salary set Salary = @Salary";
SqlCommand sqlcmdUpd = new SqlCommand(updCommand, conn);
sqlcmdUpd.Parameters.AddWithValue("@Salary", ds.Tables[0].Rows[0]["Salary"].ToString());
sqlcmdUpd.ExecuteNonQuery();

このコードは問題ないようです。変数をもう一度確認ds.Tables[0].Rows[0]["Salary"].ToString()し、コードをデバッグして、すべての変数が必要かどうかを確認してください。

あなたのようなものを使ってみてくださいDataAdapter

DataAdapter da = new DataAdapter(sqlcmdUpd);
DataTable dt = new DataTable();
da.Fill(dt);
于 2013-03-19T07:13:02.323 に答える