2012-02-24 163 views
0

我有这样的:C#和PostgreSQL INSERT INTO

NpgsqlConnection c = new NpgsqlConnection(conx.getConexion()); 
c.Open(); 
NpgsqlDataAdapter da = new NpgsqlDataAdapter("Insert into \"Marca\" (\"NombreMarca\") values ('" + cbMarca.Text + "')", c); 
c.Close(); 

并且表:

CREATE SEQUENCE idmarca 
    INCREMENT 1 
    MINVALUE 1 
    MAXVALUE 2147483647 
    START 10 
    CACHE 1; 

CREATE TABLE "Marca" 
("idMarca" integer NOT NULL DEFAULT nextval('idmarca'::regclass), 
    "NombreMarca" character varying(100) NOT NULL, 
    CONSTRAINT "PKMarca" PRIMARY KEY ("idMarca"), 
    CONSTRAINT "UNombreMarca" UNIQUE ("NombreMarca") 
); 

的问题是,当我尝试插入到表中,对于一些没有任何原因发生。这是一个try-catch,因此查询中不会产生异常。 cbMarca是一个组合框。与数据库的连接已经过测试。

而且,这个工程:

cbMarcaB.Items.Clear(); 
DataTable dt = cons.Select("Select \"NombreMarca\" From \"Marca\" Order by \"NombreMarca\""); 
for (int i = 0; i < dt.Rows.Count; i++) 
    { 
     cbMarcaB.Items.Add(dt.Rows[i]["NombreMarca"]); 
    } 

所以我不知道是什么问题...

+0

你检查了结果查询字符串? – 2012-02-24 02:25:24

回答

1

你应该使用NpgsqlDataAdapter做插入,而使用我不认为NpgsqlCommand参见下面的例子found here

string insertQuery = "INSERT INTO npdata VALUES (@key, @ndata)"; 
NpAdapter.InsertCommand = new NpgsqlCommand(insertQuery, conn); 

NpParam = NpAdapter.InsertCommand.Parameters.Add("@key", NpgsqlTypes.NpgsqlDbType.Text); 
NpParam.SourceColumn = "key"; 
NpParam.SourceVersion = DataRowVersion.Current; 

NpParam = NpAdapter.InsertCommand.Parameters.Add("@ndata", NpgsqlTypes.NpgsqlDbType.Bigint); 
NpParam.SourceVersion = DataRowVersion.Current; 
NpParam.SourceColumn = "ndata"; 
+0

我看到了,但在库中没有NpAdapter。这就是为什么我使用DataAdapter。我必须导入哪些参考才能使用适配器? – dbncourt 2012-02-24 01:58:05

+0

对不起,在他的代码顶部, 私人NpgsqlDataAdapter NpAdapter; – shenku 2012-02-24 01:59:33

+0

我找到了答案!无论如何,家伙! :P – dbncourt 2012-02-24 02:34:48