将.NET SqlTypes与MySQL一起使用
本文关键字:一起 MySQL NET SqlTypes | 更新日期: 2023-09-27 18:19:54
我正在编写一个从MySQL数据库读取数据并将数据迁移到SQL Server数据库的应用程序。我之所以选择用C#编写这篇文章,是因为它内置于SQL结构和功能中。我想知道,在我的类中是否可以使用System.Data.SqlTypes.*结构,MySql中的数据将被读取到这些结构中?
即。
// Pseudo code
IDataReader reader = /* { return DB reader } */;
while (reader.Read())
{
SqlString str = (SqlString) reader["someVarCharField"];
SqlBoolean b = (SqlBoolean) reader["someTinyIntField"];
}
这会奏效吗?或者有更好的方法吗?
如果您知道MySqlDbType,可以说最好的做法是简单地显式转换为.Net类型,然后在将数据插入SqlServer时使用正确的SqlDbType。这消除了铸造、空引用等方面的任何问题。
string myStringField = reader["someVarCharField"].ToString();
bool myBoolField = reader.GetBoolean("booleanField");
etc....
我在想,如果你只是做了一些类似的事情,psudeo代码会怎么样
在Sql类内部。。。
while(reader.Read())
{
int id = int.Parse(reader[0].ToString());
string name = reader[1];
bool active = false;
if(int.Parse(reader[2].ToString()) == 1)
active = true;
SqlServerDBInsert(id, name, active);
}
插入
SQLServerDBInsert(int id, string name, bool active)
{
string query = "INSERT INTO MyTable(ID, Name, Active) VALUES(@id, @name, @active)";
using(SqlCommand cmd = new SqlCommand(query, conn))
{
SqlParamter param = new SqlParameter();
param.ParameterName = "@id";
param.Value = id;
param.SqlDbType = SqlDbType.Int;
cmd.Parameters.Add(param);
....
}
}
我不确定是否同时打开MySQL和SQLServer的连接,所以这是值得担心的。