报如下错误:ERROR [42000] [MySQL][ODBC 3.51 Driver][mysqld-5.5.20]You have an error in your SQL syntax;
 check the manual that corresponds to your MySQL server version for the right syntax 
to use near 'AddApiMtDb' at line 1其中'AddApiMtDb' 是存储过程:-------------------------------------------------------
DELIMITER $$USE `testmessage`$$DROP PROCEDURE IF EXISTS `AddApiMtDb`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `AddApiMtDb`(IMOBILES VARCHAR(16),CONTENTI TEXT,SEND_TIMEI DATETIME)
BEGIN
INSERT INTO apiddDB(SM_ID,SRC_ID,MOBILES,CONTENT,SEND_TIME,UNICODE_CONTENT) VALUES (0,0,IMOBILES,CONTENTI,SEND_TIMEI,'allyn');
END$$DELIMITER ;----------------------------------------------------C#写入代码
string MyConString = getConAddImportMySql();
            OdbcConnection MyConnection = new OdbcConnection(MyConString);
            MyConnection.Open();
            OdbcDataAdapter myodbcadapter = new OdbcDataAdapter();
            DataSet dataset = new DataSet();
            myodbcadapter.SelectCommand = new OdbcCommand();
            myodbcadapter.SelectCommand.Connection = MyConnection;
            myodbcadapter.SelectCommand.CommandText = "AddApiMtDb";
            myodbcadapter.SelectCommand.CommandType = CommandType.StoredProcedure;
            OdbcParameter opfirst = new OdbcParameter("?IMOBILES", OdbcType.VarChar, 16);
            opfirst.Value = mobilei;
            myodbcadapter.SelectCommand.Parameters.Add(opfirst);            OdbcParameter opsend = new OdbcParameter("?CONTENTI", OdbcType.Text);
            opsend.Value = textinfo;
            myodbcadapter.SelectCommand.Parameters.Add(opsend);            OdbcParameter opthirth = new OdbcParameter("?SEND_TIMEI", OdbcType.DateTime);
            opthirth.Value = System.DateTime.Now;
            myodbcadapter.SelectCommand.Parameters.Add(opthirth);            myodbcadapter.SelectCommand.ExecuteReader();
            myodbcadapter.Fill(dataset);c# mysql

解决方案 »

  1.   

    sql文里有非法字符。。
    你检查下/
      

  2.   

    adapter.SelectCommand.Parameters.Add(
                "@SerialNum", OdbcType.Int).Value = 239;
    这么用的吧
      

  3.   

      myodbcadapter.SelectCommand.Parameters.Add("@IMOBILES", OdbcType.VarChar, 16).Value = mobilei;            //OdbcParameter opsend = new OdbcParameter("?CONTENTI", OdbcType.Text);
                //opsend.Value = textinfo;
                myodbcadapter.SelectCommand.Parameters.Add("@CONTENTI", OdbcType.Text).Value = textinfo;            //OdbcParameter opthirth = new OdbcParameter("?SEND_TIMEI", OdbcType.DateTime);
                //opthirth.Value = System.DateTime.Now;            myodbcadapter.SelectCommand.Parameters.Add("@SEND_TIMEI", OdbcType.DateTime).Value = System.DateTime.Now;
    已改成以上还上报错。至于那个就一个插入语句:MYSQLINSERT INTO api_mt_DB(SM_ID,SRC_ID,MOBILES,CONTENT,SEND_TIME,UNICODE_CONTENT)
     VALUES (0,0,IMOBILES,CONTENTI,SEND_TIMEI,'allyn');
    不知会不会是:CREATE DEFINER=`root`@`localhost` PROCEDURE `testMes`(IMOBILES VARCHAR(16),CONTENTI TEXT,SEND_TIMEI DATETIME)这里有问题,它就提示说第一句那语句有问题。
      

  4.   

    得到解决了用text="{call procname(?,?)}"