更新命令在asp.net c#中不工作
本文关键字:工作 net 命令 asp 更新 | 更新日期: 2023-09-27 18:16:31
protected void Button1_Click(object sender, EventArgs e)
{
SqlConnection mycon = new SqlConnection("Data Source=127.0.0.1;Initial Catalog=master;Integrated Security=True");
SqlDataAdapter myadp = new SqlDataAdapter();
myadp.UpdateCommand = new SqlCommand("Update [orgs] Set [fname]=@fname,[weblnk]=@weblnk,[email]=@email,[cntct]=@cntct,[lctn]=@lctn,[cdscrptn]=@cdscrptn,[bsnstp]=@bsnstp WHERE [cmpny]=" +Label1.Text,mycon);
myadp.UpdateCommand.Parameters.Add("@fname", SqlDbType.VarChar, 50).Value = TextBox1.Text;
myadp.UpdateCommand.Parameters.Add("@weblnk", SqlDbType.VarChar,80).Value = TextBox3.Text;
myadp.UpdateCommand.Parameters.Add("@email", SqlDbType.VarChar,80).Value = TextBox4.Text;
myadp.UpdateCommand.Parameters.Add("@cntct", SqlDbType.VarChar,20).Value = TextBox5.Text;
myadp.UpdateCommand.Parameters.Add("@lctn", SqlDbType.VarChar,80).Value = TextBox6.Text;
myadp.UpdateCommand.Parameters.Add("@cdscrptn", SqlDbType.VarChar,600).Value = TextBox7.Text;
myadp.UpdateCommand.Parameters.Add("@bsnstp", SqlDbType.VarChar,40).Value = TextBox8.Text;
myadp.UpdateCommand.Connection = mycon;
mycon.Open();
myadp.UpdateCommand.ExecuteNonQuery();
mycon.Close();
}
protected void Button1_Click(object sender, EventArgs e)
{
SqlConnection mycon = new SqlConnection("Data Source=127.0.0.1;Initial Catalog=master;Integrated Security=True");
SqlDataAdapter myadp = new SqlDataAdapter();
myadp.UpdateCommand = new SqlCommand("Update [orgs] Set [fname]=@fname,[weblnk]=@weblnk,[email]=@email,[cntct]=@cntct,[lctn]=@lctn,[cdscrptn]=@cdscrptn,[bsnstp]=@bsnstp WHERE [cmpny]=@cmpny", mycon);
myadp.UpdateCommand.Parameters.Add("@fname", SqlDbType.VarChar, 50).Value = TextBox1.Text;
myadp.UpdateCommand.Parameters.Add("@cmpny", SqlDbType.VarChar, 50).Value = TextBox2.Text;
myadp.UpdateCommand.Parameters.Add("@weblnk", SqlDbType.VarChar,80).Value = TextBox3.Text;
myadp.UpdateCommand.Parameters.Add("@email", SqlDbType.VarChar,80).Value = TextBox4.Text;
myadp.UpdateCommand.Parameters.Add("@cntct", SqlDbType.VarChar,20).Value = TextBox5.Text;
myadp.UpdateCommand.Parameters.Add("@lctn", SqlDbType.VarChar,80).Value = TextBox6.Text;
myadp.UpdateCommand.Parameters.Add("@cdscrptn", SqlDbType.VarChar,600).Value = TextBox7.Text;
myadp.UpdateCommand.Parameters.Add("@bsnstp", SqlDbType.VarChar,40).Value = TextBox8.Text;
myadp.UpdateCommand.Connection = mycon;
mycon.Open();
myadp.UpdateCommand.ExecuteNonQuery();
mycon.Close();
}
这里我也对cmpny
进行了参数化但它仍然不起作用
我假设cmpny
是一个文本字段,因此您需要将其用撇号括起来:
WHERE [cmpny]='" + Label1.Text + "'",mycon);
但是,立即忘记这一点。您应该始终使用参数。
WHERE [cmpny]=@cmpny", mycon);
和
myadp.UpdateCommand.Parameters.AddWithValue("@cmpny", TextBox1.Text);
-
删除不必要的SqlDataAdapter。
-
在本地服务器上获取一个真实的数据库。主数据库不是为你的数据准备的。
-
查看ExecuteNonQuery的返回值。也许你假设的公司价值并不存在于表格中?
-
在你的代码中添加最少的异常处理
,
using (SqlConnection mycon = new SqlConnection("Data Source=127.0.0.1;Initial Catalog=master;Integrated Security=True"))
{
mycon.Open();
using (SqlCommand cmd = new SqlCommand("Update [orgs] Set [fname]=@fname,[weblnk]=@weblnk,[email]=@email,[cntct]=@cntct,[lctn]=@lctn,[cdscrptn]=@cdscrptn,[bsnstp]=@bsnstp WHERE [cmpny]=@cmpny", mycon))
{
cmd.Parameters.Add("@fname", SqlDbType.VarChar, 50).Value = TextBox1.Text;
// all the other params
cmd.Parameters.Add("@bsnstp", SqlDbType.VarChar, 40).Value = TextBox8.Text;
cmd.Parameters.Add("@cmpny", /*correct Datatype here*/).Value = Label1.Text; // from a Label ?? how does it got there? You should take the value from the actual source
int affectedRecords = cmd.ExecuteNonQuery();
}
}
Label1。文本也应该参数化,因为它可能包含一些引号。一般来说,您应该在SQL中参数化每个用户输入的值,以避免SQL注入。
你可能有一些错误,因此你的更新命令不工作。