我有一个简单的用户表
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连接。
但是我在ExecuteNonQuery()
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());
}
值username, name, mail
填充了数据。
有人知道解决方案吗?
答案 0 :(得分: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";
(值应该是您从用户输入中收集的变量)