将值文本框插入mysql数据库

时间:2010-11-19 18:58:15

标签: c# mysql

我在将文本框值插入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";
        }
    }

5 个答案:

答案 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)