C#编写动态网页,Update语句报错
报错信息如下:
违反并发性: UpdateCommand 影响了预期 1 条记录中的 0 条。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.DBConcurrencyException: 违反并发性: UpdateCommand 影响了预期 1 条记录中的 0 条。
我想往数据库里的一条记录的其中一个字段添加值,原本这条记录的其他字段是有值得,表也是有主键的。
protected void Button1_Click(object sender, EventArgs e)
{
string StrCon = "Data Source=localhost;Initial Catalog=systemDB;" + "Integrated Security=True;User ID=sa;Password=";
SqlConnection conn = new SqlConnection(StrCon);
//定义SQL字符串
string MySQL = "Select * From Teacher;";
//定义数据适配器对象
SqlDataAdapter MyAdapter = new SqlDataAdapter(MySQL, conn);
//打开数据库连接
conn.Open();
//定义MyAdapter对象的UpdateCommand属性使用的Update语句
MyAdapter.UpdateCommand = new SqlCommand("Update Teacher set " +
"CourseName=@CourseName where TeacherName=@TeacherName", conn);
//定义UpdateCommand属性使用的参数名称、类型、长度、使用的表的字段名称,需要和表中的定义吻合
MyAdapter.UpdateCommand.Parameters.Add("@CourseName", SqlDbType.VarChar, 20, "CourseName");
//定义一个参数对象,并给其赋值
SqlParameter parameter = MyAdapter.UpdateCommand.Parameters.Add("@TeacherName", SqlDbType.VarChar);
parameter.SourceColumn = "TeacherID";//SourceColumn属性,获取或设置源列的名称,该源列映射到 DataSet 并用于加载或返回 Value
parameter.SourceVersion = DataRowVersion.Original;//SourceVersion属性,获取或设置在加载 Value 时要使用的 DataRowVersion;DataRowVersion描述 DataRow 的版本,Original 该行中包含其原始值
//定义数据集对象
DataSet MyDataSet = new DataSet();
//用表studentinfo的内容填充数据集对象
MyAdapter.Fill(MyDataSet, "Teacher");
//定义数据行对象
DataTable MyTable = MyDataSet.Tables["Teacher"];
foreach (DataRow MyRow in MyTable.Rows)
{
if (MyRow["TeacherName"].ToString() == Session["UserName"].ToString())
{
MyRow["CourseName"] = DropDownList1.SelectedIndex;
MyAdapter.Update(MyDataSet, "Teacher");
Response.Write("<script language=Javascript> alert(\"选课成功!\");</script>");
conn.Close();
return;
}
else
{
Response.Write("<script language=Javascript> alert(\"请您先选课!\");</script>");
}
}
conn.Close();
}
}
[解决办法]
update Teacher set 字段=’你要更新的值‘ where 你的条件
[解决办法]
没有对应的数据,@TeacherName 为什么对应 TeacherID?
SqlParameter parameter = MyAdapter.UpdateCommand.Parameters.Add("@TeacherName", SqlDbType.VarChar);
parameter.SourceColumn = "TeacherID";//SourceColumn属性,获取或设置源列的名称,该源列映射到 DataSet 并用于加载或返回 Value
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/