黑马程序员技术交流社区

标题: 使用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)

updateError.jpg

作者: 许庭洲    时间: 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