MonoTouch: Не удается создать коллекцию DbParameterCollection? - PullRequest
1 голос
/ 11 ноября 2011

Я парень из 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 говорит ...

  • var parameters = new System.Data.Common.DbParameterCollection (); <- "Невозможно создать экземпляр абстрактного класса или интерфейса 'System.Data.Common.DbParameterCollection'" </em>

  • parameters.Add ("@ 1", DbType.String) .Value = "test"; <- «Локальная переменная« параметры »не может быть использована до ее объявления.» </em>

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

1 Ответ

2 голосов
/ 11 ноября 2011

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

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

...