执行以下代码会给我错误。 列'用户名'不能为空
值正在变量中传递。但我认为OdbcCommand
陈述没有准备好。
OdbcCommand cmd = new OdbcCommand
{
CommandText =
"INSERT INTO orders(username,name,email,address,contact_number,html_email)
VALUES(@username,@name,@email,@address,@contact_number,@html_email)",
Connection = Con
};
cmd.Parameters.AddWithValue("@username", username);
cmd.Parameters.AddWithValue("@name", name);
cmd.Parameters.AddWithValue("@email", email);
cmd.Parameters.AddWithValue("@address", add);
cmd.Parameters.AddWithValue("@contact_number", contact);
cmd.Parameters.AddWithValue("@html_email", table);
billid = cmd.ExecuteScalar().ToString();
答案 0 :(得分:0)
使用ExecuteNonQuery
代替ExecuteScalar()
执行插入语句。
int affectedRows = cmd.ExecuteNonQuery();
您可能想要返回最后插入的记录ID,这就是您使用ExecuteScalar
的原因。 OdbcCommand
不支持命名参数,因此您需要在查询中使用占位符。总的来说,您需要将查询更改为此
CommandText = "INSERT INTO orders(username,name,email,address,contact_number,html_email)
VALUES(?,?,?,?,?,?) SELECT SCOPE_IDENTITY()";
现在您可以使用ExecuteScalar()
billid = cmd.ExecuteScalar().ToString();
答案 1 :(得分:0)
试试这个:
OdbcCommand cmd = new OdbcCommand("INSERT INTO orders(username,name,email,address,contact_number,html_email)
VALUES(@username,@name,@email,@address,@contact_number,@html_email)",Con);
cmd.Parameters.AddWithValue("@username", username);
cmd.Parameters.AddWithValue("@name", name);
cmd.Parameters.AddWithValue("@email", email);
cmd.Parameters.AddWithValue("@address", add);
cmd.Parameters.AddWithValue("@contact_number", contact);
cmd.Parameters.AddWithValue("@html_email", table);
billid = cmd.ExecuteNonQuery();
答案 2 :(得分:0)
OdbcCommand
不支持命名参数语法,而应使用问号占位符:
OdbcCommand cmd = new OdbcCommand
{
CommandText =
"INSERT INTO orders(username,name,email,address,contact_number,html_email)
VALUES(?, ?, ?, ?, ?, ?)",
Connection = Con
};
cmd.Parameters.AddWithValue("@p1", username);
cmd.Parameters.AddWithValue("@p2", name);
cmd.Parameters.AddWithValue("@p3", email);
cmd.Parameters.AddWithValue("@p4", add);
cmd.Parameters.AddWithValue("@p5", contact);
cmd.Parameters.AddWithValue("@p6", table);
int affectedRecords = cmd.ExecuteNonQuery();