繁体   English   中英

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

[英]Copy table from SQL Server 2008 to MS Access 2007

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

所以我们开始:我想将表从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 Bulk副本不能用于从SQL Server复制到Access。

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

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

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

如果要通过.NET启动,则创建一个SSIS包并从.NET调用它

详情

古老的问题,但是我认为donationdetails中所有行的RowState都是Unchanged,因此DataAdapter将它们视为“我不需要对此行做任何事情”。

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

oDA.Update(donationdetails);

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

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

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

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

oDA.Update(ds);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM