将表从SQL Server 2008复制到MS Access 2007

本文关键字:MS Access 2007 复制 2008 SQL Server | 更新日期: 2023-09-27 18:28:47

首先,对于那些想问我到底为什么要从SQL SERVER下载到ACCESS的人,让我告诉你这个场景。有些PC的配置非常低,(256MB RAM,2GHz处理器)我无法安装SQL Server。因此,我希望在SQL server上执行主要操作,并在较慢的机器上完成一些数据检索和审计工作。

因此,我们开始:我想将表从SQL Server复制到MS Access 2007。我试过了:

1) 连接到sql server,通过从sql server读取表来填充数据表对象。

2) 创建到MS Access的连接,并使用Dataadapter.Update方法将表更新到MS Access数据库。

然而,第二步不起作用,尽管它没有抛出任何错误。这是我的代码:

SqlConnection cnn = new SqlConnection(@"initial catalog=DBTempleERM;user id=aditya;password=Aditya_ravi$;Data Source=adityalappy'sqlexpress");
SqlCommand cmd = new SqlCommand("SELECT * FROM donationdetails", cnn);
cnn.Open();
System.Data.SqlClient.SqlDataAdapter sDA = new SqlDataAdapter(cmd);
DataTable donationdetails = new DataTable();
sDA.MissingSchemaAction = MissingSchemaAction.AddWithKey;
sDA.Fill(donationdetails);
MessageBox.Show(donationdetails.Rows.Count.ToString());
OleDbConnection oleConn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Jet OLEDB:Database Password=Aditya_ravi$;Data Source=C:'dbt.accdb");
oleConn.Open();
OleDbCommand oleComm = new OleDbCommand();
OleDbDataAdapter oDA = new OleDbDataAdapter(oleComm);
OleDbCommandBuilder oCb = new OleDbCommandBuilder(oDA);
oDA.Update(donationdetails);

执行结束时没有抛出任何错误,但我看不到任何从SQL Server复制到MS Access的记录。

我了解到SQL批量复制不能用于从SQL Server复制到Access。

我还想将SQL Server表中的主键添加到MS Access表中。

将表从SQL Server 2008复制到MS Access 2007

为什么不使用SSIS为您做这件事呢。

您可以创建SSIS包以将sql表复制到MS访问。

如果要由.NET启动,请创建SSIS包并从.NET 调用它

有关详细信息,

此时,oDA未连接到访问端的任何表:

oDA.Update(donationdetails);

因此,即使您在DataTable中拥有所有数据,也没有将其复制到的目标。

我不认为这是最好的方法,但这就是为什么你的代码不能正常工作的核心。

这个问题很古老,但我敢打赌捐赠详细信息中所有行的RowState都是Unchanged,所以DataAdapter将它们视为"我不需要对这一行做任何事情"。

您可以使用数据集对象而不是数据表。

DataSet ds=new DataSet();
sDA.Fill(ds,tablename);
oDA.Update(ds);