MonoTouch: не удается создать DbParameterCollection?

#c# #ios #sqlite #xamarin.ios #system.data

#c# #iOS #sqlite #xamarin.ios #system.data

Вопрос:

Я vb.net парень пытается разобраться в MonoTouch c #.

Я создал этот помощник по обработке данных:

 public static void ExecuteCommand (SqliteConnection cnn, string command, System.Data.Common.DbParameterCollection parameters)
{
    using (var c = cnn.CreateCommand()) {
        c.CommandText = command;
        c.CommandType = CommandType.Text;
        foreach (var p in parameters)
        {
            c.Parameters.Add (p);
        }
        c.ExecuteNonQuery ();
    }
}
  

И теперь я хочу вызвать ExecuteCommand…

 var parameters = new System.Data.Common.DbParameterCollection();
parameters.Add("@1", DbType.String).Value = "test";
DataConnection.ExecuteCommand ("INSERT INTO mytest (name) VALUES (@)", parameters);
  

Но MonoTouch говорит…

  • переменные параметры = новая система.Данные.Обычный.DbParameterCollection(); <— «Не удается создать экземпляр абстрактного класса или интерфейса ‘System.Data.Обычный.DbParameterCollection'»

  • parameters.Add(«@1», DbType.String).Значение = «test»; <— «Локальная переменная ‘parameters’ не может быть использована до ее объявления».

Я уверен, что ответ довольно прост, но исходит из VB.Сетевой мир, для меня это не очевидно.

Ответ №1:

System.Data.Обычный.DbParameterCollection абстрактен, поэтому вы не можете его создать. Вы должны создавать (конкретную( коллекцию, которая наследуется от него. В случае SQLite это было бы Mono.Data.Sqlite.SqliteParameterCollection .

Ваша вторая ошибка, вероятно, связана с первой, поскольку parameters не удалось правильно скомпилировать.