ADO.NET 2.0驱动程序在CreateCommand()上抛出异常

时间:2016-12-27 08:24:28

标签: c# ado.net

我正在使用Embracadero的ADO.NET 2.0驱动程序并尝试连接到远程Interbase基础(http://cc.embarcadero.com/item/25497)。我正在尝试对我的数据库执行插入查询,但是当我插入查询时,它会抛出“对象引用未设置为对象的实例”。有没有人有同样的问题?

我有:

    public DbConnection GetConnection()
    {
        DbConnection con = new TAdoDbxConnection();
        con.ConnectionString = _connectionString;

        return con;
    }

然后我做:

        using (var conn = GetConnection())
        {
            using (var cmd = conn.CreateCommand())
            { 
                cmd.CommandText = query;

                var param = cmd.CreateParameter();// <---- here exception is thrown
                NazwaChannel.ParameterName = "@param";
                NazwaChannel.Value = 1000;
                NazwaChannel.DbType = DbType.Int32;

                cmd.Parameters.Add(param);

                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();

            }
        }

查询类似于“插入表(tableID,columnname)值(GEN_ID(GenaratorName,1),@ param)”。

1 个答案:

答案 0 :(得分:1)

答案是:

  • 在参数创建之前使用conn.Open()
  • 而不是'INSERT INTO TABLENAME(column1,column2,...)VALUES(@ value1,@ value2,...)&#39;使用&#39; INSERT INTO TABLENAME(column1,column2,...)VALUES(?,?,...)&#39;。