我在将文本框值插入mysql数据库时遇到问题 - 没有错误消息,也没有插入。我做错了什么
private void RegisterCustomer()
{
string firstname = txtfirstname.ToString();
OdbcConnection conn;
conn = new OdbcConnection(ConfigurationManager.ConnectionStrings["jConnString"].ConnectionString);
conn.Open();
string sql = "insert into klant (firstname) values (@firstname)";
OdbcCommand cmd = new OdbcCommand(sql, conn);
cmd.Parameters.Add("@firstname", OdbcType.VarChar).Value = firstname;
try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Check.Text += ex.ToString() + sql;
}
finally
{
conn.Close();
conn.Dispose();
Check.Text += "OK";
}
}
答案 0 :(得分:0)
"insert into klant values (firstname) values (@firstname)"
我认为正确的查询是:
"insert into klant values (@firstname)";
答案 1 :(得分:0)
您的查询:
string sql = "insert into klant values (firstname) values (@firstname)";
指定values
两次。它应该是以下形式:
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
{VALUES | VALUE} ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE
col_name=expr
[, col_name=expr] ... ]
所以删除额外的values
,你应该很好。
答案 2 :(得分:0)
你有两次价值观。我从来没有这样看过。你INSERT INTO表(columm_names ...)VALUES(value1,'value2',...)
编辑:也许你应该尝试直接文本并删除框以查看它是否进入。至少你会知道在哪里看。
编辑:我也会回显我的firstname变量,看看它有什么。
答案 3 :(得分:0)
根据MSDN http://msdn.microsoft.com/en-us/library/system.data.odbc.odbccommand.parameters.aspx
当CommandType设置为Text时,ODBC的.NET Framework数据提供程序不支持将命名参数传递给SQL语句或OdbcCommand调用的存储过程。在其中任何一种情况下,请使用问号(?)占位符。
所以你的查询应该是:
string sql = "insert into klant (firstname) values (?)"
如果您有多个参数,则按照添加的顺序设置它们。
另外,我认为该行
string firstname = txtfirstname.ToString();
应该阅读
string firstname = txtfirstname.Text();
但这不是导致你眼前问题的原因。
答案 4 :(得分:-1)
更确切地说,它应该是:
insert into klant (firstname) values (@firstname)