Использование .NET SqlTypes с MySQL - PullRequest
1 голос
/ 10 января 2012

Я пишу приложение, которое читает из базы данных 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"];
}

Будет ли эторабота или есть лучший способ сделать это?

Ответы [ 2 ]

2 голосов
/ 10 января 2012

Если вам известен MySqlDbType , возможно, лучше всего просто выполнить явное преобразование в тип .Net, а затем использовать правильный SqlDbType при вставкеданные в SqlServer.Это устраняет любые проблемы с приведением типов, нулевыми ссылками и т. Д.

string myStringField = reader["someVarCharField"].ToString();
bool myBoolField = reader.GetBoolean("booleanField");
etc....
1 голос
/ 10 января 2012

Я думал, что если вы только что сделали что-то вроде псевдо-кода

внутри Sql Class ...

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 будет открыто одновременно, так что есть о чем беспокоиться.

...