数据库是MySQL
asp.net+C#
String SqlCmd="INSERT INTO information(name)values(@name)";
OdbcConnection Conn=new OdbcConnection("DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=inf;USER=root;PASSWORD=1234;OPTION=3;" );
OdbcCommand  CmdObj = new OdbcCommand(SqlCmd, Conn);
CmdObj.Parameters.Add("@name",OdbcType.Text).Value=txtName.Text;语句都能执行,但是最后在文本框中输入:abcd,而添加到数据库中的记录却是空的(有记录,但字段为空值)。对CmdObj.Parameters[["@name"]监视,也能够看到已赋值。如果我用传统的直接执行SQL语句的方式就能够正确添加
例:SqlCmd="INSERT INTO information(name)values('"+txtName.Text+"')";
实在不解!而且我还换了多种添加查询参数的方式如:
1、
CmdObj.Parameters.Add("@name",OdbcType.Text);
CmdObj.Parameters["@name"].Value=txtName.Text;2、
CmdObj.Parameters.Add("@name",txtName.Text);
3、
CmdObj.Parameters.Add("@name",OdbcType.Text,txtName.Text.Length).Value=txtName.Text;都宣告失败!所以恳请各位大虾,不吝赐教!

解决方案 »

  1.   

    what is the datatype of your column? tryString SqlCmd="INSERT INTO information ([name]) values (?)";
    OdbcConnection Conn=new OdbcConnection("DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=inf;USER=root;PASSWORD=1234;OPTION=3;" );
    OdbcCommand  CmdObj = new OdbcCommand(SqlCmd, Conn);
    CmdObj.Parameters.Add("@name",txtName.Text);
      

  2.   

    did you callConn.Open();
    CmdObj.ExecuteNonQuery();
    Conn.Close();???
      

  3.   

    妈的,终于OK了!谢谢你思归!
    原来查询语句一定要用"?"表示参数!!!
    将String SqlCmd="INSERT INTO information(name)values(@name)";
    改为String SqlCmd="INSERT INTO information(name)values(?)";
    就OK了!难道只能用这个方法,那岂不是赋多几个参数的话,都一定要按顺序排列?
      

  4.   

    yes, in .NET, parameters in OleDb or Odbc are position-oriented