执行多个查询,在sql语句结束后找到的字符

时间:2014-10-21 07:04:35

标签: java sql netbeans ms-access-2013

我正在尝试执行下面给出的两个查询,但它给出了在sql语句异常结束后找到的字符。我打算在table1中添加一些数据,从用户添加一些数据。使用的数据库是ms访问数据库。

try{
     String ad=  ((JTextField)jDateChooser1.getDateEditor().getUiComponent()).getText();
     String dd= ((JTextField)jDateChooser2.getDateEditor().getUiComponent()).getText();
     String rt= jTextField8.getText();
     int rn= Integer.parseInt(jTextField2.getText());
     int rr= Integer.parseInt(jTextField3.getText());
     String sr= jTextField7.getText();
     int nn= Integer.parseInt(jTextField4.getText());
     int na= Integer.parseInt(jTextField5.getText());
     int nc= Integer.parseInt(jTextField6.getText());
     int gc= Integer.parseInt(jTextField1.getText());

     stmt= conn.createStatement();
     String squery="insert into Room(GuestCode, Title, FirstName, LastName, Country, State, City, ContactNo) select GuestCode, Title, FirstName, LastName, Country, State, City, ContactNo from GuestDetails where GuestCode=gc;insert into Room(ArrivalDate, DepartureDate, RoomType, RoomNo, RoomRate, SpecialRequirements, NoOfNights, NoOfAdults, NoOfChildren) values(' "+ad+" ',' "+dd+" ',' "+rt+" ',' "+rn+" ',' "+rr+" ',' "+sr+" ',' "+nn+" ',' "+na+" ',' "+nc+" ');";

     rs=stmt.executeQuery(squery);
 }catch(Exception ex){
     JOptionPane.showMessageDialog(null, ex);
 }

1 个答案:

答案 0 :(得分:1)

你不允许在stmt.executeQuery中放入多个语句,所以一切都在; (你也可以离开; out)应该放在一个单独的查询中并单独执行。

然而,在再次阅读您的问题描述时(以及开始编辑以添加预准备语句时)我已经发现您尝试做的是从1个源中检索一些数据,从示波器中的变量中检索其余数据。

您只能使用1个插入来插入数据。如果你使用多个,它们将最终成为多行。 如果你坚持使用2个语句,1应该是插入,另一个是更新。 (仍然运行2个单独的executeQuery来运行它们。)

如果你想在1个语句中执行它,那么你必须以这样的方式编写查询。

这看起来像是一个副本: Using INSERT INTO with 'SELECT' to supply some values but not others (Access 2010)

最后:尝试使用预准备语句来避免sql注入(并使代码更加整洁)

PreparedStatement statement = conn.prepareStatement("select abc from xyz where x = ?");
statement.setString(1, "value you want to match x with";
statement.executeQuery();

// this will replace the value of the first ? with "value you want to match x with"