MySQL社区

标题: 程序往MYSQL插入数据用的是存储过程报错 [打印本页]

作者: mysqluip    时间: 2013-3-8 19:35
标题: 程序往MYSQL插入数据用的是存储过程报错
报如下错误: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);  


注:直接用参数 call 'AddApiMtDb' 在SQLYOG里可以执行,不报错,能插入数据。但与程序相连插入就报如上错误,(直接用SQL,不用存储过程的方式不报错,正常运行。)
作者: kider    时间: 2013-3-9 23:08
存储过程没有问题
作者: mysqluip    时间: 2013-3-11 19:09
已解决,用text="{call AddApiMtDb(?,?,?)}"是语法问题。代码写错了。




欢迎光临 MySQL社区 (http://www.mysqlpub.com/) Powered by Discuz! X3.2