DataAdapter已更新字段

时间:2013-03-19 07:02:03

标签: c# asp.net sql

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

页面加载的

新更新,loadstatement工作,我能够将数据填充到我的datagridview,但我仍然无法更新我的数据库wuth我的按钮点击。问题仍然存在,没有错误被抛出。但没有更新

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

    }

2 个答案:

答案 0 :(得分: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() varabile,请调试您的代码并查看所有变量是否是您想要的..

尝试使用您的DataAdapter喜欢;

DataAdapter da = new DataAdapter(sqlcmdUpd);
DataTable dt = new DataTable();
da.Fill(dt);

答案 1 :(得分:0)

您是否只使用1张桌子?

我认为你不需要所有这些代码。试试这个:

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

    da.Update(ds,sTable);

    lblErrorMsg.Text = "Updated";
}

DataGrid上的任何更改都应该正确保存到数据库中。