黑马程序员技术交流社区
标题:
使用SqlDataAdapter的Update方法更新数据库,运行时异常?
[打印本页]
作者:
黑马田杰
时间:
2013-2-1 22:50
标题:
使用SqlDataAdapter的Update方法更新数据库,运行时异常?
本帖最后由 黑马田杰 于 2013-2-2 16:37 编辑
源代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace importRow
{
public partial class Form1 : Form
{
SqlConnection conn;
SqlCommand cmd;
SqlDataAdapter sda;
DataSet ds;
int intIndex;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//初始化
this.button1.Text = "加载数据";
this.button2.Text = "修改数据";
}
private void button1_Click(object sender, EventArgs e)
{
//加载数据
conn = new SqlConnection("server=SHADOW-PC\\SQLEXPRESS;database=test;uid=sa;pwd=123;");
sda = new SqlDataAdapter("select * from dbo.table_2", conn);
ds = new DataSet();
sda.Fill(ds, "cs");
this.dataGridView1.DataSource = ds.Tables["cs"];
for (int i = 0; i < this.dataGridView1.ColumnCount; i++)
{
this.dataGridView1.Columns.Width = 66;
}
this.dataGridView1.Columns[0].ReadOnly = true;
}
private void button2_Click(object sender, EventArgs e)
{
//修改数据
DataTable dt = ds.Tables["cs"];
DataTable dsShow = (DataTable)this.dataGridView1.DataSource;
dt.ImportRow(dsShow.Rows[intIndex]);
SqlCommandBuilder comBuilder = new SqlCommandBuilder(sda);
sda.Update(dt);
}
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
intIndex = e.RowIndex;
}
}
}
直接在DataGridView控件中修改数据后点击button2按钮可修改成功,但发生如下运行时错误,请问这是什么原因?该如何解决?
updateError.jpg
(87.14 KB, 下载次数: 53)
下载附件
2013-2-1 23:00 上传
作者:
许庭洲
时间:
2013-2-2 10:02
1. 将保存提交到数据库,在DataGridView中修改会同步反应到DataSet中;
2. 这样只要将DataSet Update到数据库就是“保存修改”;
3. Update,保存前要dataGridView1.EndEdit();
4. dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
bindingsource1.EndEdit()已提交正在编辑的修改。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2