Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将表从SQL Server 2008复制到MS Access 2007_C#_Sql Server_Ms Access_Converter - Fatal编程技术网

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

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

首先,对于那些想问我究竟为什么要从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数据库

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

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”不是一个英语单词。