如何使用VB.NET将MySQL表数据导入SQL Server Compact表(.sdf)
VB.NET 实现MySQL数据导入SQL Server Compact(.sdf)的正确方案
原有代码的错误点
- InsertCommand 错误使用了 MySQL 专属的
MySqlCommand类,目标库为 SQL Server Compact,需要改用SqlCeCommand - INSERT 语句不完整,缺少字段列表和 VALUES 参数占位部分
- MySQL 连接字符串参数不全,缺少用户名、密码、目标数据库名等必填配置
- 未显式释放连接资源,容易出现连接泄漏
修正后的完整实现代码
' 需提前引用对应依赖:MySql.Data、Microsoft.SqlServer.Compact Imports MySql.Data.MySqlClient Imports System.Data.SqlServerCe Public Class DataImport Public Sub ImportItemsData() ' 补全MySQL连接串参数:服务器地址、用户名、密码、源数据库名 Dim mysqlConnStr As String = "server=你的MySQL服务地址;user id=登录用户名;password=登录密码;database=源数据库名;Charset=utf8;" Dim sdfConnStr As String = "Data Source=|DataDirectory|\Barcodedatabase.sdf;Password=leonado-abg;Persist Security Info=True" ' 使用Using自动释放资源,无需手动关闭连接 Using con1 As New MySqlConnection(mysqlConnStr) Using con2 As New SqlCeConnection(sdfConnStr) con1.Open() con2.Open() ' 从MySQL读取数据 Dim da As New MySqlDataAdapter("SELECT ID, Name FROM Items", con1) da.AcceptChangesDuringFill = False ' 配置SQLCE的插入命令 Dim insertCmd As New SqlCeCommand("INSERT INTO Items (ID, Name) VALUES (@ID, @Name)", con2) insertCmd.Parameters.Add("@ID", SqlDbType.VarChar, 50, "ID") insertCmd.Parameters.Add("@Name", SqlDbType.VarChar, 50, "Name") da.InsertCommand = insertCmd Dim dt As New DataTable() da.Fill(dt) ' 批量插入到sdf库 da.Update(dt) End Using End Using End Sub End Class
注意事项
- 需提前确保.sdf文件中Items表的字段类型、长度和MySQL源表的对应字段完全匹配,否则会触发插入失败
- 数据量较大时可以在
da.Update(dt)前加SqlCe事务,批量提交避免脏数据 - 部署时需确保运行环境安装了SQL Server Compact对应的运行时
内容的提问来源于stack exchange,提问作者likedark web
相关产品推荐
相关产品推荐

