StringBuffer response = new StringBuffer(20);
                  BufferedInputStream buff = new BufferedInputStream(System.in);
char inchar;
do{
in = buff.read();
inchar = (char)in;
if (in != -1){
response.append(inchar);
}
}while((in != -1) && (inchar != '\n'));
System.out.println(response);//  1 ResultSet rec = st.executeQuery("SELECT * FROM t WHERE id = "+response+"");
//  2 ResultSet rec = st.executeQuery("response");如果用1,输入response为3就可以查询到结果但是如果我用2,然后输入的是我输入的是SELECT * FROM t WHERE id = 3,就报
SQL Errorjava.sql.SQLException: [Oracle][ODBC][Ora]ORA-00900: invalid SQL statement 900 37000请问该怎么解决呢,我就想手动输入一串SQL进行查询。谢谢~!

解决方案 »

  1.   

       ResultSet rec = st.executeQuery("SELECT * FROM t WHERE id = "+response+"");
      改成这样子 试下  吧
       ResultSet rec = st.executeQuery("SELECT * FROM t WHERE id = ='" + response + "'");
      

  2.   

    ResultSet rec = st.executeQuery("response");
    改为
    ResultSet rec = st.executeQuery(response.toString());
      

  3.   


    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String sql = "";
    ResultSet rs = null;
    try {
    while((sql=br.readLine())!=null){
                              rs  = st.executeQuery(sql); 
    }
                            while(rs.next()){
    System.out.println(rs.getString(0));
    }
    } catch (IOException e) {
    e.printStackTrace();
    } catch (SQLException e) {
    e.printStackTrace();
    }
      

  4.   


    StringBuffer response = new StringBuffer(20);
    BufferedInputStream buff = new BufferedInputStream(System.in);
    char inchar;
    do {
    in = buff.read();
    inchar = (char) in;
    if (in != -1) {
    response.append(inchar);
    }
    } while ((in != -1) && (inchar != '\n'));java.sql.PreparedStatement ps = conn.prepareStatement("SELECT * FROM t WHERE id =?");ps.setInt(1, Integer.valueOf(response.toString()));
    ResultSet rs = ps.executeQuery();rs.close();
    ps.close();
    conn.close();