C# 使用DataAdapter对象的update方法,更新DataSet中修改的数据,产生的报错。
代码:privatevoidForm1_Load(objectsender,EventArgse)//填充数据{conn=newSqlConnection("server...
代码: private void Form1_Load(object sender, EventArgs e)//填充数据 { conn = new SqlConnection("server=woo;database=db_15;uid=sa;pwd=1234"); SqlCommand cmd = new SqlCommand("select * from tb_command",conn); sda = new SqlDataAdapter(); sda.SelectCommand = cmd; ds = new DataSet(); sda.Fill(ds, "cs"); dataGridView1.DataSource = ds.Tables[0]; } private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { //将数据读入Textbox修改 textBox1.Text = dataGridView1.SelectedCells[0].Value.ToString(); textBox2.Text = dataGridView1.SelectedCells[1].Value.ToString(); textBox3.Text = dataGridView1.SelectedCells[2].Value.ToString(); textBox4.Text = dataGridView1.SelectedCells[3].Value.ToString(); textBox5.Text = dataGridView1.SelectedCells[4].Value.ToString(); } private void button1_Click(object sender, EventArgs e) //更新数据 { DataTable dt = ds.Tables["cs"]; sda.FillSchema(dt, SchemaType.Mapped); DataRow dr = dt.Rows.Find(label1.Text); dr["姓名"] = label2.Text.Trim(); dr["性别"] = label3.Text.Trim(); dr["年龄"] = label4.Text.Trim(); dr["奖金"] = label5.Text.Trim(); SqlCommandBuilder cmdbuilder = new SqlCommandBuilder(sda); sda.Update(dt); }
错误提示见图片,请高手指点,谢谢! 展开
错误提示见图片,请高手指点,谢谢! 展开
4个回答
展开全部
没用过Find函数,但是既然是查找主键值,那么会不会是因为你的主键是int值但是传入的是string或是ds.Tables["cs"]中没有包括主键的原因造成的呢
更多追问追答
追问
谢谢回复,如果是这个原因要怎么修改?
注:以上代码是一个教程上的例子,写的一模一样(数据库用的也是案例带的数据库),我写的就是过不了!
追答
数据库中编号的那一列是否设置为主键了。还有dataset 如果使用vs工具设置的话,看看编号那一列是否是主键。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
(label1.Text)对应哪个界面元素?值是主键吗?仅仅看你上面的图片的话,个人觉得应该是“编号”对应的那个textbox的值。
追问
label1.Text对应的是编号,在数据库中是主键!但没有在VS中设定主键。
追答
如果你对update不是很熟悉,你还是直接用sql语句好了,或者有sqlhelper之类的辅助一下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询