(.net关于用DataRow row = table.NewRow();方法插入不同数据库导致失败)高人进来!

我在线等待求教!~请帮忙~
sql没有问题,在access数据库中写入失败.
这个问题我已经找到问题所在,但还是解决不了:

代码:
protected void Button1_Click(object sender, EventArgs e)
{

OleDbDataAdapter adapter = new OleDbDataAdapter("select * from book", "provider=microsoft.jet.oledb.4.0;data source=D:\\asp.netWeb\\Abook\\data_base\\lyb.mdb");
OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);

DataTable table = new DataTable();
DataSet ds = new DataSet();
adapter.Fill(ds, "book");
table = ds.Tables["book"];

DataRow row = table.NewRow();
row["title"] = "xingkong";
row["memo"] = "为什么不好用";
table.Rows.Add(row);
adapter.Update(table); //提示出错的地方--

}

--------------------------------------------------------
上面的方法如果写入sql数据库没有任何问题,但如果写入access数据库则出现提示错误.
OleDbCommandBuilder和sql数据库的SqlCommandBuilder我分的清,不是声明的错误,引用空间也没有问题!
难道这样的插入数据的方法对access数据库没有办法实现了么?
我的表字段比较多,用 insert 方法插入容易写错,用上面的方法对access就是不行么?
在线求教~?感激不尽~,我最终的需求就是:用上面的方法,把数据写到access数据库里!
我又得到了一些进展,我发现我的代码已经把ds.Tables["book"]这个ds表写入数据了,但是如何把DataSet表格写入数据库?关键就在这.
谁能知道把DataSet中的表格写入Access数据库中的方法和代码?

第1个回答  2007-06-12
//我想你搞错了,你那个已经是往access数据库中fill一行数据而不是update,不知道你同不同意?修改如下:
//////////////////////////////////////////////////////////
OleDbDataAdapter adapter = new OleDbDataAdapter("select * from book", "provider=microsoft.jet.oledb.4.0;data source=D:\\asp.netWeb\\Abook\\data_base\\lyb.mdb");
OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);

DataTable table = new DataTable();
DataSet ds = new DataSet();
adapter.Fill(ds, "book");
table = ds.Tables["book"];

OleDbCommand command = new OleDbCommand("INSERT INTO book (title, memo) " + "VALUES (?, ?)");
adapter.InsertCommand = command;

DataRow row = table.NewRow();
row["title"] = "xingkong";
row["memo"] = "为什么不好用";
table.Rows.Add(row);
adapter.Fill(table);
///////////////////////////////////////////////////////////
数据库我也刚看,在我理解中
OleDbCommand command = new OleDbCommand("INSERT INTO book (title, memo) " + "VALUES (?, ?)");
adapter.InsertCommand = command;
这两行是告诉数据库你将要进行什么操作吧?好像没有那两行也行。
第2个回答  2007-06-17
如果经常用ACCESS的朋友应该知道我们的SQL语句有时候需要这样select * from [book],问题就出在这个中括号了。但是在SQL中我们是不需要注意这个问题的。

最后发现OleDbCommandBuilder的两个属性可以给SQL查询串中空格或者保留标记加个指定前后缀的,你的只需要加上两句就ok了。本回答被提问者采纳
第3个回答  2007-06-13
为Access数据库文件添加ASPNET帐户,并将修改权限赋于该帐户。另外还需要为该数据库文件存放的目录添加写的权限,因为在访问数据库时还会生成一个.ldb的文件。
第4个回答  2007-06-11
access数据库里面还真没用过这个呢
相似回答