1

我正在尝试从 gridview 更新我的表格,下面的代码显示我没有错误但我的表格没有更新,我的错误是什么想法?

新更新了页面加载,加载语句有效,我能够将数据填充到我的 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 回答