方法一:用sql语句 /*************导出到Access********************/ insert into openrowset(’Microsoft.Jet.OLEDB.4.0’, ’x:/A.mdb’;’admin’;’’,A表) select * from 数据库名..B表 /*************导入Access********************/ insert into B表 selet * from openrowset(’Microsoft.Jet.OLEDB.4.0’, ’x:/A.mdb’;’admin’;’’,A表) 方法二:按记录逐条处理
操作ACCESS数据库和操作SQL SERVER 差不多,只是C#里面连接ACCESS要用
System.Data.OleDb类,因为ACCESS不支持两个表的批处理(2000之前的版本不支持,2000之后的就不知道了。),所以你要判断插入和更新,建议按记录逐条处理。
我的思路是这样:先从ACCESS数据库查询出该需要操作的数据,生成DataTable临时表,然后循环DataTable表,将数据更新到SQL SERVER数据库,无的插入,有的更新。
示例如下:
//命名空间
using System;
using System.Data;
using System.Data.OleDb;
//连接ACCESS数据库代码
OleDbConnection adoConn= new OleDbConnection();
string StrConn= "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=密码;Data source=d:/accessTest.mdb";
adoConn.ConnectionString =StrConn;
adoConn.Open();
//从ACCESS数据库查询数据
string sql1="select * from table1";
OleDbDataAdapter dataAdapter = new OleDbDataAdapter (sql1, adoConn);
DataTable dTable=new DataTable();
dataAdapter.Fill (dTable);
dataAdapter.Dispose();
adoConn.close();
//连接SQL SERVER
StrConn= "略(连接SQL SERVER 数据库的字符串)";
adoConn.ConnectionString =StrConn;
adoConn.Open();
OleDbCommand cmd=adoConn.CreateCommand();
OleDbTransaction Trans=adoConn.BeginTransaction();
cmd.Transaction=Trans;
Trans.Rollback();
try
{
//处理table表数据,导入到SQL SERVER 数据库
for(int i=0;i |