1

我是一个试图弄清楚 MonoTouch c# 的 vb.net 人。

我做了这个数据助手:

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 参数 = new System.Data.Common.DbParameterCollection(); <-- "无法创建抽象类或接口 'System.Data.Common.DbParameterCollection' 的实例"

  • parameters.Add("@1", DbType.String).Value = "test"; <-- “局部变量‘参数’在声明之前不能使用。”

我确信答案很简单,但是来自 VB.Net 世界,这对我来说并不明显。

4

1 回答 1

2

System.Data.Common.DbParameterCollection抽象的,因此您无法创建它。您应该创建一个 (concrete( 继承自它的集合。在 SQLite 情况下,它将是Mono.Data.Sqlite.SqliteParameterCollection.

您的第二个错误可能与第一个错误有关,因为parameters无法正确编译。

于 2011-11-10T22:07:39.237 回答