将表从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表中。
为什么不使用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);