使用 C# 将数据从 SQL 传输到 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();
}
这种方法工作正常,但感觉笨拙且缓慢。所以我想知道是否有另一种更好的方法将数据从一个数据库传输到另一个数据库。
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
SqlDataReader 比 SqlDataAdapter
使用事务并将每个命令绑定到该事务。完成插入命令后,提交事务,这样可能运行得更快。
SqlDataReader runs faster than SqlDataAdapter
use a transaction and bind each command to this transaction. after finishing the insert commands, commit the transaction, which may run faster.
另一个想法:
如果始终是相同的 Access 数据库,并且您始终从相同的表导入数据,则可以 在 Access 中链接 SQL Server 表一次。
如果链接了 SQL Server 表,则可以像本地表一样在 MDB 中使用它。
然后,您可以通过在 Access 数据库中通过 OleDB 运行此查询,直接从链接表插入本地表:
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: