2010-11-19 193 views
1

将textboxvalue插入到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"; 
     } 
    } 
+0

我会检查的前两件事:当你在调试器中运行它时,try/catch/finally块会执行哪一个操作?当你看SQL日志时,它试图运行什么声明? – Ken 2010-11-19 19:00:26

+0

txtfirstname是文本框控件吗? – AndHeCodedIt 2010-11-19 19:01:32

+0

@AndHeCodedIt是的,它是 – Sjemmie 2010-11-19 19:10:44

回答

0

根据MSDN。
http://msdn.microsoft.com/en-us/library/system.data.odbc.odbccommand.parameters.aspx

当CommandType设置为文本,在.NET Framework数据提供ODBC不支持将命名参数的SQL语句或通过的OdbcCommand调用的存储过程。无论哪种情况,请使用问号(?)占位符。

所以您的查询应该是:

string sql = "insert into klant (firstname) values (?)"

如果你有多个参数,它们在顺序设置你添加。

另外,我觉得行

string firstname = txtfirstname.ToString();

应该读

string firstname = txtfirstname.Text();

但是,这并不是什么原因造成立即解决问题。

+0

字符串sql =“插入klant(firstname)值(?)”工程!但字符串firstname = txtfirstname.Text();或字符串firstname = txtfirstname.Value.ToString();仍然给我System.Web.UI.HtmlControls。插入到我的数据库中的HtmlInputText – Sjemmie 2010-11-21 12:51:36

+0

什么worrks是字符串firstname = txtfirstname.Value – Sjemmie 2010-11-21 12:58:52

0
"insert into klant values (firstname) values (@firstname)" 

我认为正确的查询是:

"insert into klant values (@firstname)"; 
-1

更准确地说,它应该是:

insert into klant (firstname) values (@firstname) 
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,你应该很好。

+0

小错误,修正它,但那不是它 – Sjemmie 2010-11-19 19:06:21

0

您有两次值。我从来没有见过这种方式。你插入表(columm_names ...)VALUES(value1,'value2',...)

编辑:也许你应该尝试直接文本,并消除框,看看它是否进入。至少你会知道去哪里看。

编辑:我也回应我的firstname变量,看看它有什么。

+0

小错误,修复它,但那不是它 – Sjemmie 2010-11-19 19:09:04