用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 ;
好像是把参数值当作列名了???
代码如下:
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 ;
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'Â 12' in 'field list'的错误,应该是列 A 12 没有在字段列表里,导致的报错insert into t_card_appinfo 后面最好加上具体的列 (...)