将.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"];
}

这会奏效吗?或者有更好的方法吗?

将.NET SqlTypes与MySQL一起使用

如果您知道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的连接,所以这是值得担心的。