我使用dataset向sqlserver2000插入都没有问题,但是同样的代码使用access就不行啦
代码如下 //说明数据集
DataSet1.recordDataTable recordDataTable = new DataSet1.recordDataTable();
//说明数据集的行对象。
DataSet1.recordRow recordRow = (DataSet1.recordRow)recordDataTable.NewrecordRow();
recordTableAdapter rta = new recordTableAdapter();
//将数据写入行对象
recordRow.name = txbId.Text;
recordRow.record_id =Convert.ToInt32(txbId.Text);
recordRow.idcard = txbidcard.Text;
recordRow.idleness = txbIdleness.Text;
recordRow.sex = cbbSex.Text;
recordRow.xuhao =Convert.ToInt32( txbXuhao.Text);
recordRow.insurance = txbXuhao.Text;
//行对象加入数据集
recordDataTable.AddrecordRow(recordRow);
//更新数据库
rta.Update(recordDataTable);
MessageBox.Show("保存成功");
系统也不会报错,而且其他页面的dataGridView绑定这个datset后,可以看见新插入的数据是存在的。但是就是数据库当中没有更新,说明
rta.Update(recordDataTable);
没有成功。
为什么呢?同样的代码用sqlserver就可以?有哪位朋友知道望不吝赐教
代码如下 //说明数据集
DataSet1.recordDataTable recordDataTable = new DataSet1.recordDataTable();
//说明数据集的行对象。
DataSet1.recordRow recordRow = (DataSet1.recordRow)recordDataTable.NewrecordRow();
recordTableAdapter rta = new recordTableAdapter();
//将数据写入行对象
recordRow.name = txbId.Text;
recordRow.record_id =Convert.ToInt32(txbId.Text);
recordRow.idcard = txbidcard.Text;
recordRow.idleness = txbIdleness.Text;
recordRow.sex = cbbSex.Text;
recordRow.xuhao =Convert.ToInt32( txbXuhao.Text);
recordRow.insurance = txbXuhao.Text;
//行对象加入数据集
recordDataTable.AddrecordRow(recordRow);
//更新数据库
rta.Update(recordDataTable);
MessageBox.Show("保存成功");
系统也不会报错,而且其他页面的dataGridView绑定这个datset后,可以看见新插入的数据是存在的。但是就是数据库当中没有更新,说明
rta.Update(recordDataTable);
没有成功。
为什么呢?同样的代码用sqlserver就可以?有哪位朋友知道望不吝赐教
因为不同的数据库 连接对象不一样
SQLSERVER 你看前面的开头 你再找下 替换掉就OK的
DataSet1.AcceptChanges();
{
//说明数据集
DataSet1.recordDataTable recordDataTable = new DataSet1.recordDataTable();
//说明数据集的行对象。
DataSet1.recordRow recordRow = (DataSet1.recordRow)recordDataTable.NewrecordRow();
recordTableAdapter rta = new recordTableAdapter();
//将数据写入行对象
recordRow.name = txbId.Text;
recordRow.record_id =Convert.ToInt32(txbId.Text);
recordRow.idcard = txbidcard.Text;
recordRow.idleness = txbIdleness.Text;
recordRow.sex = cbbSex.Text;
recordRow.xuhao =Convert.ToInt32( txbXuhao.Text);
recordRow.insurance = txbXuhao.Text;
//行对象加入数据集
recordDataTable.AcceptChanges();
recordDataTable.AddrecordRow(recordRow);
//更新数据库
try
{
rta.Update(recordDataTable);
recordDataTable.AcceptChanges();
MessageBox.Show("保存成功");
}
catch (Exception)
{
MessageBox.Show("保存异常");
}
dataGridView1.DataSource = rta.GetData();//在dataGridView中绑定表
}最后一句是从数据库总查询出所有记录,然后绑定dataGridView,在dataGridView中已经可以显示所有记录,包括刚刚新增的记录。
但是查看数据库就没有这些新增记录。很怪
一种直接从数据源(也就是dataset的选项卡)新建,这种方式在新建的时间会同时生成dataset。
另一种在服务器资源管理器中新建,先建立一个数据库连接,然后手工生产一个dataset,在手动将数据库连接中的表引入dataset中。无论哪种方式,生成dataset时系统会提示是否将该数据库文件copy到项目中。如果选择是,则将该【数据库文件】copy到项目根目录和\bin\Debug两个地方,其中\bin\Debug目录下的【数据库文件】程序运行时都对它进行读写,它与工程中的dataset一一对应。而工程的【数据库连接】是与根目录的【数据库文件】对应的。如果我们要改变数据库表结构或者增删表,就要对根目录的表进行修改,这样工程的【数据库连接】中的表就会同步更新,然后我们在将数据库连接中的新表引入dataset,最后\bin\Debug下的【数据库文件】也就会同步更改。\bin\Debug的【数据库文件】中的数据也和和根目录下的保存一致。但是反过来,\bin\Debug下的【数据库文件】有改变根目录却不会同步变化由于上述原因,所以在vs中运行程序,则对表的更新不能持久,当我们再次在vs中运行程序并执行更新后,上次更新的数据都将消失(\bin\Debug【数据文件】与根目录【数据文件】同步)。但是直接运行\bin\Debug目录下的exe文件就没有这个问题。如果选择不将【数据库文件】copy到项目中,那么所有的更新都将针对源数据库。无论哪种方式生成的dataset,数据库的连接字符串都写在app.config文件中。如果我们需要更改数据库文件的位置更改这个连接字符串即可。