如何通过编码将数据从 MS Access 导入 Sql Server [关闭]
Posted
技术标签:
【中文标题】如何通过编码将数据从 MS Access 导入 Sql Server [关闭]【英文标题】:How to import data from MS Access to Sql Server by coding [closed] 【发布时间】:2017-12-01 11:03:42 【问题描述】:我需要通过代码将Access数据库导入Sql Server。我多年来用 C# 制作的软件已集成到 Access 数据库中。从现在开始,我们正在迁移到 Sql Server,目的是升级到下一个版本,系统将仅适用于 Sql Server。我想首先创建一个具有相同名称的表和列的Sql数据库,软件读取Access表并将数据保存在Sql数据库中。有没有其他更实用的方式通过编码来做到这一点?
我一直在搜索,发现只有工具准备好了,但没有通过编码。
【问题讨论】:
如果它是一次性任务,为什么要在代码中执行此操作? SSMA/SQL Server 迁移助手可以做到这一点,并为您提供一个良好的起点。 为什么在这种情况下我必须逐个访问每个用户的计算机并安装 SqlServer 才能进行迁移。其目的是通过该软件,在Visual Studio创建的表单中,在为新版本更新软件时,用户自己可以通过单击Ok按钮来迁移到新数据库。 【参考方案1】:好的,假设您的访问数据库表有 3 列,第一列是整数类型,第二列是字符串(varchar),第三列是 DateTime(日期)。
所以这是您将数据从 Access 传递到 Sql Server 时必须执行的代码:
DataTable table = new DataTable();
// get data from access
using(OleDbConnection conn = new OleDbConnection("connString1"))
using(OleDbDataAdapter da = new OleDbDataAdapter(@"SELECT * FROM MyTable", conn))
da.Fill(table);
//insert data into Sql server:
using(SqlConnection conn = new SqlConnection("connString2"))
using(SqlCommand cmd = new SqlCommand())
cmd.CommandText = @"INSERT INTO MyTable VALUES (@p1, @p2, @p3)";
cmd.Connection = conn;
cmd.Parameters.Add("@p1", SqlDbType.Int);
cmd.Parameters.Add("@p2", SqlDbType.CarChar, 50);
cmd.Parameters.Add("@p3", SqlDbType.DateTime);
conn.Open();
for(int i = 0; i < table.Rows.Count; i++)
cmd.Parameters["@p1"].Value = Convert.ToInt32(table.Rows[i][0]);
cmd.Parameters["@p2"].Value = table.Rows[i][1].ToString();
cmd.Parameters["@p3"].Value = Convert.ToDateTime(table.Rows[i][2]);
try
cmd.ExecuteNonQuery();
catch (Exception ex)
MessageBox.Show(ex.Message);
break;
【讨论】:
这正是我想做的。那么这是否意味着没有更简单的方法可以做到这一点? 这是通过代码实现的最简单方法。 @vijayvikcs Tkx!以上是关于如何通过编码将数据从 MS Access 导入 Sql Server [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用sql语句和vba将数据从MS-Access导入excel power查询?