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

うーん、これを試してみてください:

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,?,?);";

これが機能しない場合は、クエリに1つの準備済みステートメントを使用する必要があります

于 2012-06-08T11:02:42.620 に答える
0

私はあなたができるとは思わない。2 つの挿入クエリに対して 2 つの準備済みステートメントを使用する必要があります。通常、1 つのトランザクションで複数のテーブルを処理し、callable ステートメントを使用する必要がある場合は、ストア プロシージャを作成します。

于 2012-06-08T09:19:43.517 に答える