// stmt=conn.createStatement();  
     // rs=stmt.executeQuery("select * from "+tableName); 
   PreparedStatement pstmt=conn.prepareStatement("select * from ?");
    pstmt.setString(1,tableName);
     // pstmt.setString(2,tableName);
      rs = pstmt.executeQuery();
请问我这PreparedStatement语句是不是写错了?SQL语句用PreparedStatement写我上面的写法对么?

解决方案 »

  1.   

    import java.sql.*;public class j
    {
    public static void main(String [] args)
    {
    try
    {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection con = DriverManager.getConnection("jdbc:odbc:aa");
    PreparedStatement ps = con.prepareStatement("select * from jobs where job_id = ?");
    ps.setInt(1,1);
    ResultSet rs = ps.executeQuery();
    while(rs.next())
    {
    System.out.println(rs.getInt(1));
    System.out.println(rs.getString(2));
    System.out.println(rs.getInt(3));
    System.out.println(rs.getInt(4));
    }
    rs.close();
    ps.close();
    con.close();
    }
    catch(Exception e)
    {
    System.out.print(e);
    }
    }
    }? 应该是写在条件那里吧
    如果写在表名那里, 会有SQL异常(已试验)
      

  2.   

    会有问题的啦...因为放入的是字符串啦,所有它会把''这两个也加上(Oracle)中,这时候可以用字符串连接来解决吧.突然想的
    PreparedStatement pstmt=conn.prepareStatement("select * from "+tableName);
      

  3.   

    楼上说的完全正确.....确实报的是着个错误...但是这样写跟
    // stmt=conn.createStatement();  
         // rs=stmt.executeQuery("select * from "+tableName); 一点区别没有啊!
      

  4.   

    成是成,不过这么写有什么必要呢?换
     stmt=conn.createStatement();  
         // rs=stmt.executeQuery("select * from "+tableName); 这2句不就好了么
      

  5.   

    我想问问如何做PreparedStatement pstmt=conn.prepareStatement("select * from ?");然后通过setXXX()来做
      

  6.   

    还有就是tableName是个字符串变量,但是   pstmt.setString(1,"account");这么写也是不成
    提示MySQL server version for the right syntax to use near ''account''at line 1
    SQL语法错误.
      

  7.   

    // stmt=conn.createStatement();  
         // rs=stmt.executeQuery("select * from "+tableName); 
       PreparedStatement pstmt=conn.prepareStatement("select * from ?");
        pstmt.setString(1,tableName);
         // pstmt.setString(2,tableName);
          rs = pstmt.executeQuery();
    请问我这PreparedStatement语句是不是写错了?SQL语句用PreparedStatement写我上面的写法对么? PreparedStatement pstmt=conn.prepareStatement("select * from ?");
        pstmt.setString(1,tableName);
    假设 String tableName ="tableA";
    得到的sql语句如下;
    select * from 'tableA'   ;
    这个语句在数据库中是不可以执行!
    相反
    PreparedStatement pstmt=conn.prepareStatement("select ? from tableA");
    String colName ="aaa";
        pstmt.setString(1,colName );语句如下select ‘aaa’ from tableA
    在数据库中是可以执行!
    理解一下setString()作的动作!