日期:2014-05-16  浏览次数:20814 次

DataSet更新到数据库的问题,重命名的列不能更新进去
private void UpdateToDb_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < num; i++ )
                sf.Sda.Update(ds.Tables[i]);
        }
当保存按钮被按动,逐个表的进行更新,sf是一个功能类,我把很多功能都写在里面了的。
此时conn.Close();,开始我新加了一行数据,保存的时候出了问题,于是我在Sda初始化处
加了一句:SQLiteCommandBuilder scb = new SQLiteCommandBuilder(sda);
点击保存按钮,新加的一行可以被保存到数据库了,
但是,当重命名列名后,执行保存不报错,不过
并没有成功的更新到数据库,这是怎么一回事呢?
------解决方案--------------------
引用:
Quote: 引用:

你误解了我的意思,你这样操作是把那一列给删掉了,其他列依然和数据库不一致,比如说数据库有8列,而你的Ds中只有7列,我是说列名必须和数据库完全一致才行

那DataSet没办法删除 重命名列了吗?看来只能是直接访问数据库了

你还是没理解我的意思,DataSet可以删除列,也可以重命名列,这个都是DataSet能做的,但是你要写入数据库,SQL语句是不允许列名和列的条数不一致的,这样是为了保证数据的完整性,打个比方:
你数据库里面有  Name,Age两列,你的DataSet里面只有一个 Name列,这样数据能插入数据库吗?显然是不能的
或者说你的DataSet里面一个School,一个Age列,你当然可以把这两列插入数据库中,但是列名不同,如果你不另外做处理,显然你的SQL语句就成了  Insert into Table(School,Age) values(...,...),这样显然是错误的,因为数据库里面并没有School列