用jdbc调用存储过程,插入一个记录,但是总是出现com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column ' 12' in 'field list'的错误,
好像是把参数值当作列名了???
代码如下:
public static void testSP() throws Exception
{
CallableStatement callStmt = null; 
Connection conn = null;
java.sql.Date currentDate = new java.sql.Date(System.currentTimeMillis());
try
{
conn = ConnDao.getInstance().getConnection();
callStmt = conn.prepareCall("{call JSDMP_PKG_T_CARD_APPINFO_SP_Insert( ?, ?, ?, ?, ?, ?, ?)}");
callStmt.setInt(1, 12);callStmt.setLong(2, 2);
callStmt.setLong(3, 3);
callStmt.setLong(4, 4);
callStmt.setLong(5, 5);
callStmt.setLong(6, 6);
callStmt.setDate(7, currentDate);
System.out.println("hhaha");int isOk = callStmt.executeUpdate();
System.out.println(isOk);
}catch(Exception e)
{
e.printStackTrace();
}finally
{
if (null != callStmt) { 
callStmt.close(); 

if (null != conn) { 
conn.close(); 

}
}
数据库代码:
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `JSDMP_PKG_T_CARD_APPINFO_SP_Insert`(
IN `var_cardID` INTEGER,
IN `var_appNO` INTEGER,
IN `var_appType` INTEGER,
IN `var_appState` INTEGER,
IN `var_appID` INTEGER,
IN `var_initFlag` INTEGER,
IN `var_lastAppDate` DATE
)
BEGIN
declare id_no int;
DECLARE EXIT HANDLER FOR SQLEXCEPTION 
BEGIN
ROLLBACK; 
END;
insert into t_card_appinfo
values
(last_insert_id(id_no)+1,
var_cardID,
var_appNO,
var_appType,
var_appState,
var_appID,
var_initFlag,
var_lastAppDate, 
1,
now());
commit;END$$
DELIMITER ;

解决方案 »

  1.   

    你的表列数和插入 value对应不上
      

  2.   


    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column ' 12' in 'field list'的错误,应该是列 A 12 没有在字段列表里,导致的报错insert into t_card_appinfo 后面最好加上具体的列 (...)
      

  3.   

    把你的参数放到过程sql里手动跑一下看看
      

  4.   

    跟踪一下你的sql看一下执行是否正常