如何通过编码将数据从MS Access导入Sql Server

莱安德罗

我需要通过代码将 Access 数据库导入到 Sql Server。我多年来用 C# 制作的软件已集成到 Access 数据库中。从现在开始,我们正在迁移到 Sql Server,目的是在升级到下一个版本时,系统将只与 Sql Server 一起工作。我想首先创建一个具有相同表名和列名的Sql数据库,软件读取Access表并将数据保存在Sql数据库中。有没有其他更实用的方法可以通过编码来做到这一点?

我一直在搜索并发现只准备了工具,但没有通过编码。

维杰维克

好的,假设您的访问数据库表有 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;
                    }
             }
     }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章