我正在尝试从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();
}
}
}
答案 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上的任何更改都应该正确保存到数据库中。