C# 将表从SQL Server 2008复制到MS Access 2007
首先,对于那些想问我究竟为什么要从SQLServer缩减到ACCESS的人,让我来告诉你这个场景。 有些电脑配置非常低(256 MB RAM,2GHZ处理器),我无法安装SQL Server。因此,我希望在SQL server上执行主要操作,在较慢的机器上执行一些数据检索和审核工作 现在我们开始: 我想将表从SQL Server复制到MS Access 2007。我试过: 1) 连接到sql server,通过从sql server读取表来填充datatable对象 2) 创建到MS Access的连接,并使用Dataadapter.Update方法将表更新到MS Access数据库 然而,第二步不起作用,尽管它没有抛出任何错误。这是我的密码:C# 将表从SQL Server 2008复制到MS Access 2007,c#,sql-server,ms-access,converter,C#,Sql Server,Ms Access,Converter,首先,对于那些想问我究竟为什么要从SQLServer缩减到ACCESS的人,让我来告诉你这个场景。 有些电脑配置非常低(256 MB RAM,2GHZ处理器),我无法安装SQL Server。因此,我希望在SQL server上执行主要操作,在较慢的机器上执行一些数据检索和审核工作 现在我们开始: 我想将表从SQL Server复制到MS Access 2007。我试过: 1) 连接到sql server,通过从sql server读取表来填充datatable对象 2) 创建到MS Acces
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 access 如果要通过.NET启动,请创建SSIS包并从.NET调用它
为什么不使用SSI为您完成这项工作呢 您可以创建SSIS包以将sql表复制到MS access 如果要通过.NET启动,请创建SSIS包并从.NET调用它
此时,oDA未连接到访问端的任何表:
oDA.Update(donationdetails);
因此,即使您拥有DataTable中的所有数据,也没有要将其复制到的目标
我认为这不是最好的方法,但这正是代码无法正常工作的核心原因。此时,oDA未连接到访问端的任何表:
oDA.Update(donationdetails);
因此,即使您拥有DataTable中的所有数据,也没有要将其复制到的目标
我不认为这是最好的方法,但这就是代码不能正常工作的核心原因。您可以使用dataset对象而不是datatable
DataSet ds=new DataSet();
sDA.Fill(ds,tablename);
oDA.Update(ds);
可以使用dataset对象而不是datatable
DataSet ds=new DataSet();
sDA.Fill(ds,tablename);
oDA.Update(ds);
古老的问题,但我打赌donationdetails中所有行的RowState都没有改变,因此DataAdapter将它们视为“我不需要对这一行做任何事情。”古老的问题,但我打赌donationdetails中所有行的RowState都没有改变,因此DataAdapter将它们视为“我不需要对这一行做任何事情。”请不要在标题前加上“C#”之类的前缀。这就是标记的作用。为了确保您了解它们,从“完整SQL Server”中可以选择一些选项:SQL Compact 4.0(或3.5)在proc@;SQL 2012的“LocalDB”中运行“作为一个单独的进程运行,但比“完整”SQL数据库引擎更轻@;当然,“常规”SQL Server Express版本请不要在标题前加上“C#”之类的前缀。这就是这些标记的用途。为了确保您了解它们,从“完整SQL Server”中可以选择以下选项:SQL Compact 4.0(或3.5)在proc@中运行;SQL 2012的“LocalDB”作为一个单独的进程运行,但比“完整”SQL数据库引擎更轻@;当然,SQL Server Express的“常规”版本请讲英语。“u”不是一个英语单词。请说英语。“u”不是一个英语单词。