1

我有这个查询,在我的 sql 命令行客户端中执行时可以正常执行并在两个表中获取条目,但是执行它会给我错误。

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'INSERT INTO tm_belonging(B ID,BELONGING_TYPE,BELONGING_TEXT)VALUES(LAST_INSERT_ID' 附近使用正确的语法

String sql="INSERT INTO tm_visitor(VISITOR_TEXT,COMPANY_TEXT,CONTACT,PERSON_TO_MEET,DEPARTMENT_TEXT,FLOOR)Values(?,?,?,?,?,?);"+"INSERT INTO tm_belonging(BID,BELONGING_TYPE,BELONGING_TEXT)VALUES(LAST_INSERT_ID(),?,?);";

PreparedStatement pst = conn.prepareStatement(sql);

pst.setString(1,VisitorName.toUpperCase());
pst.setString(2,Company.toUpperCase());
pst.setString(3,Contact);
pst.setString(4,WhomeToMeet.toUpperCase());
pst.setString(5,Department);
pst.setString(6,DepartmentFloor);
pst.setString(7,BType);
pst.setString(8,Belonging);
pst.executeUpdate();    
pst.close();
4

2 回答 2

0

我不认为你可以。您必须为两个插入查询使用两个准备好的语句。通常,如果我必须在一个事务中处理多个表并使用可调用语句,我会创建存储过程。

于 2012-06-08T09:19:43.517 回答
0

嗯试试这个:

String sql="INSERT INTO tm_visitor(VISITOR_TEXT,COMPANY_TEXT,CONTACT,PERSON_TO_MEET,DEPARTMENT_TEXT,FLOOR)Values(?,?,?,?,?,?);"+"set @lastid=LAST_INSERT_ID();"+"INSERT INTO tm_belonging(BID,BELONGING_TYPE,BELONGING_TEXT)VALUES(@lastid,?,?);";

如果这不起作用,您必须使用一个准备好的语句进行查询

于 2012-06-08T11:02:42.620 回答