2016-11-30 2 views
0

私は簡単なユーザテーブルODBCのPostgresのエラー

CREATE TABLE benutzer 
(
    user_id character(38) NOT NULL, 
    user_name character varying(50) NOT NULL, 
    user_fullname character varying(50), 
    user_password character varying(50), 
    user_email character varying(50), 
    user_locked boolean, 
    CONSTRAINT pk_benutzer PRIMARY KEY (user_id) 
) 
WITH (
    OIDS=FALSE 
); 

そして、私のC#のプログラムの開発でODBC接続を持っています。 しかし、私はデータで満たされているusername, name, mailExecuteNonQuery()

try 
{ 
    if(con.State != System.Data.ConnectionState.Open) 
     con.Open(); 

    System.Console.WriteLine("State: " + con.State.ToString()); 

    OdbcCommand cmd = new OdbcCommand("INSERT INTO benutzer (user_id, user_name, user_fullname, user_password, user_email, user_locked) VALUES (?,?,?,?,?,?)", con); 
    cmd.Parameters.Add(username, OdbcType.Char, 38); 
    cmd.Parameters.Add(username, OdbcType.VarChar, 50); 
    cmd.Parameters.Add(name, OdbcType.VarChar, 50); 
    cmd.Parameters.Add(username, OdbcType.VarChar, 50); 
    cmd.Parameters.Add(mail, OdbcType.VarChar, 50); 
    cmd.Parameters.Add("1", OdbcType.Char, 1); 

    cmd.ExecuteNonQuery(); 

    con.Close(); 
} 
catch (OdbcException e) 
{ 
    System.Console.Write(e.ToString()); 
} 

値にNULL値のエラーが発生します。

誰かが解決策を知っていますか?

+0

どのようなエラー(値を使用すると、ユーザー入力から収集した変数でなければなりません)あなたの入力に応じて、各パラメータに値を追加するコードを変更することができます*ん*あなた取得する? – HimBromBeere

+0

解決済み! エラーは「ヌル値エラー」でした – Phil795

答えて

2

メソッドAddの最初のパラメータは、その値ではなくパラメータ名である必要があります。基本的に6つのパラメータを作成していますが、それらには値を与えません。
ODBCはパラメータの名前付け方法を気にしないので、エラーは発生しません。

あなたは単に

OdbcCommand cmd = new OdbcCommand(@"INSERT INTO benutzer 
(user_id, user_name, user_fullname, user_password, user_email, user_locked) 
VALUES (?,?,?,?,?,?)", con); 
cmd.Parameters.Add("p1",OdbcType.Char, 38).Value = user_id; 
cmd.Parameters.Add("p2", OdbcType.VarChar, 50).Value = user_name; 
cmd.Parameters.Add("p3", OdbcType.VarChar, 50).Value = user_full_name; 
cmd.Parameters.Add("p4", OdbcType.VarChar, 50).Value = user_password; 
cmd.Parameters.Add("p5", OdbcType.VarChar, 50).Value = mail; 
cmd.Parameters.Add("p6", OdbcType.Char, 1) = "1"; 

+0

ありがとう@スティーブは素晴らしい仕事をしました! – Phil795