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

发布于 2024-11-05 08:14:24 字数 727 浏览 0 评论 0原文

对于我当前的 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();
}

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

For my current project in c# I need to transfer data from a SQL-Database to an Access-Database. For now I load the data into a DataSet using a SqlDataAdapter. After that I loop through the entries and insert them into the Access-DB using OleDb:

// 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();
}

This approach works fine, however it feels clumsy and slow. So I was wondering if there is another better way to transfer data from one DB to another.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不必了 2024-11-12 08:14:24
  1. 使用SqlDataReader:
    SqlDataReader 比 SqlDataAdapter
  2. 使用事务运行得更快:
    使用事务并将每个命令绑定到该事务。完成插入命令后,提交事务,这样可能运行得更快。
  1. Use SqlDataReader:
    SqlDataReader runs faster than SqlDataAdapter
  2. Use Transaction:
    use a transaction and bind each command to this transaction. after finishing the insert commands, commit the transaction, which may run faster.
兰花执着 2024-11-12 08:14:24

另一个想法:
如果始终是相同的 Access 数据库,并且您始终从相同的表导入数据,则可以 在 Access 中链接 SQL Server 表一次。

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

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

Another idea:
If it's always the same Access database and you import your data always from the same table(s), you can link the SQL Server tables in Access once.

If a SQL Server table is linked, you can use it in the MDB just like a local table.
Then, you can just insert directly from the linked table into the local table by running this query via OleDB in the Access database:

insert into LocalAccessTable (Column1, Column2)
select Column1, Column2
from LinkedSqlServerTable
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文