OleDbDataAdapter.update的问题

zhuyaowei 2008-11-04 05:19:07
我现在在作一个access和sqlserver互相导入的程序,两个数据库表结构完全一样。

在从access向sqlserver导时能成功导入,可是 从sqlserver往access导入时,发生错误

{"INSERT INTO 语句的语法错误。"}

不知道怎么纠错,请各位大虾指点。

代码如下:

OleDbDataAdapter dpSqlServer = new OleDbDataAdapter("select * from tablename", SqlServerConn);
DataSet dsSqlServer = new DataSet();
dpSqlServer.Fill(dsSqlServer );

DataSet dsAccess= new DataSet();
OleDbDataAdapter dpAccess = new OleDbDataAdapter("select * from tablename where 1=0", AccessConn);
dpAccess .Fill(dsAccess);

dsAccess= dsSqlServer ;


for (int j = 0; j < dsSqlServer.Tables[0].Rows.Count; j++)
{
dsAccess.Tables[0].Rows[j].SetAdded();

}
try
{
OleDbCommandBuilder cbAccess = new OleDbCommandBuilder(dpAccess);

//导入数据
dpAccess .Update(dsAccess);

}
catch{}
...全文
101 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuyaowei 2008-11-06
  • 打赏
  • 举报
回复

谢谢楼上。

我只是把主要部分列出来了

后来查到原因了,我的字段和关键字冲突。改了名后就可以了
qinhl99 2008-11-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 qinhl99 的回复:]
foreach (DataRow row in dt.Rows)
{
if (row.RowState != DataRowState.Added)
{
row.SetAdded();
}
}
[/Quote]

//将 DataRow 的 Rowstate 更改为 Added。如果当前行未处于 Unchanged 或 Added 状态,则将引发 InvalidOperationException 并显示一条消息,指示只能对 RowState 为 Unchanged 的 DataRow 实例调用 SetAdded。
还有你的catch{}这样写不太规范,出了错,你都不知道!
qinhl99 2008-11-04
  • 打赏
  • 举报
回复
//导入数据

dpAccess.Update(dsAccess);
dpAccess.AcceptChanges();
qinhl99 2008-11-04
  • 打赏
  • 举报
回复
foreach (DataRow row in dt.Rows)
{
if (row.RowState != DataRowState.Added)
{
row.SetAdded();
}
}
qinhl99 2008-11-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhuyaowei 的回复:]
谢楼上,我还是很想弄明白insert 错误出在哪里,如何调试。
[/Quote]
//不知道你这是不是全部的代码
zhuyaowei 2008-11-04
  • 打赏
  • 举报
回复
谢楼上,我还是很想弄明白insert 错误出在哪里,如何调试。
qinhl99 2008-11-04
  • 打赏
  • 举报
回复
1. 在SQL SERVER里查询access数据:
-- ======================================================
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\DB.mdb";User ID=Admin;Password=')...表名
-------------------------------------------------------------------------------------------------

2. 将access导入SQL server
-- ======================================================
在SQL SERVER 里运行:
SELECT *
INTO newtable
FROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\DB.mdb";User ID=Admin;Password=' )...表名
-------------------------------------------------------------------------------------------------

3. 将SQL SERVER表里的数据插入到Access表中
-- ======================================================
在SQL SERVER 里运行:
insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source=" c:\DB.mdb";User ID=Admin;Password=')...表名
(列名1,列名2)
select 列名1,列名2 from sql表

实例:
insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'C:\db.mdb';'admin';'', Test)
select id,name from Test


INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\trade.mdb'; 'admin'; '', 表名)
SELECT *
FROM sqltablename
qinhl99 2008-11-04
  • 打赏
  • 举报
回复
sf
feiyun0112 2008-11-04
  • 打赏
  • 举报
回复
dpAccess .insertcommand.commandtext=?

*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)
http://feiyun0112.cnblogs.com/

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧