#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
не удалось правильно скомпилировать.