使用C#将数据从SQL传输到Access

时间:2011-05-05 07:17:04

标签: c# database ms-access

对于我在c#中的当前项目,我需要将数据从SQL数据库传输到Access数据库。现在我使用SqlDataAdapter将数据加载到DataSet中。之后,我遍历条目并使用OleDb将它们插入Access-DB:

// Load data from SQL
DataSet ds = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter("select goes here", sqlConnection);
adapter.Fill(ds);

// Prepare the Insert Command
oleDBCommand = "Insert into...";
oleDBCommand.Parameters.Add(new OleDbParameter(...));

// Insert every row from the DataSet
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
    // Update Parameters and Execute
    oleDBCommand.Parameters[0].Value = ds.Tables[0].Rows[i].ItemArray[0];
    oleDBCommand.ExecuteNonQuery();
}

这种方法很好,但感觉笨拙和缓慢。所以我想知道是否有另一种更好的方法将数据从一个数据库传输到另一个数据库。

2 个答案:

答案 0 :(得分:1)

  1. 使用SqlDataReader: SqlDataReader比SqlDataAdapter
  2. 运行得更快
  3. 使用交易: 使用事务并将每个命令绑定到此事务。完成插入命令后,提交可能运行得更快的事务。

答案 1 :(得分:0)

另一个想法:
如果它始终是相同的Access数据库,并且您始终从同一个表导入数据,则可以link the SQL Server tables in Access一次。

如果链接了SQL Server表,则可以像在本地表中一样在MDB中使用它 然后,您可以通过Access数据库中的OleDB运行此查询,直接从链接表插入本地表:

insert into LocalAccessTable (Column1, Column2)
select Column1, Column2
from LinkedSqlServerTable