代码之家  ›  专栏  ›  技术社区  ›  EricSchaefer

Npgsql:INSERT命令不插入

  •  1
  • EricSchaefer  · 技术社区  · 14 年前

    问题是:

    NpgsqlCommand.Text:插入mytable(id,name)值(:id,:name)
    参数1:name=id,value=42
    参数2:name=name,value=whatever

    command.ExecuteScalar() 没有失败,但没有新行。也没有重复的id。

    using (var command = connection.CreateCommand()) {
        command.Transaction = transaction;
        command.CommandText = "INSERT INTO mytable (id, name) VALUES (:id, :name)";       
    
        var idParameter = command.CreateParameter();
        idParameter.Direction = ParameterDirection.Input;
        idParameter.DbType = DbType.Int32;
        idParameter.ParameterName = "id";
        idParameter.Value = 42;
        command.Parameters.Add( idParameter );
    
        var nameParameter = command.CreateParameter();
        nameParameter.Direction = ParameterDirection.Input;
        nameParameter.DbType = DbType.String;
        nameParameter.ParameterName = "name";
        nameParameter.Value = "whatever";
        command.Parameters.Add( nameParameter );
    
        command.ExecuteScalar();
    }
    

    上面的代码不是真正的代码。我不得不从几个DAL类中收集它来线性化它。。。
    当然,事务是在该代码之前创建的,之后提交。

    CREATE TABLE mytable
    (
        "name" character varying NOT NULL,
        id integer NOT NULL,
        CONSTRAINT mytable_pkey PRIMARY KEY (id)
    )
    WITH (
        OIDS=FALSE
    );
    ALTER TABLE mytable OWNER TO myuser;
    

    问题:

    • 胡?

    结果是:

    2 回复  |  直到 14 年前
        1
  •  1
  •   jgauffin    14 年前

    不要忘记提交,因为您正在使用事务

        2
  •  2
  •   David Espart    14 年前

    command.ExecuteNonQuery();
    

    insetad of command.ExecuteScalar()