stmt.executeQuery(sqlstr);你这句的返回类型是ResultSet的,所以会这样

解决方案 »

  1.   

    上面的代码有点乱,我在重新写一下:import java.sql.*;
    class createTable{
        public static void main(String args[]){
    String dbURL="jdbc:microsoft:sqlserver://top01:1433";
    String user="yzj";
    String passwd="password";
    String sqlstr="create table test1(
                           number_id integer not null,
                           telephone_number  varchar(20), 
                           email_address     varchar(30),
                           student_number    integer not null, 
                           primary key(number_id,student_number))";
    try{
        Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
        System.out.println("成功加载驱动程序!");
    }
    catch (ClassNotFoundException e1){
        System.out.println("加载驱动程序失败!");
        System.out.println(e1.getMessage());
        return;
    } try{
        Connection con=DriverManager.getConnection(dbURL,user,passwd);
        Statement stmt=con.createStatement();    //创建Statement对象
        System.out.println("连接数据库成功!");
        try{
            stmt.executeQuery(sqlstr);
            System.out.println("创建表test1成功!");
        }
        catch (SQLException e3){
            System.out.println("创建表test1失败!");
            System.out.println("SQLException:"+e3.getMessage());
        }
        con.close();
    }
             catch (SQLException e2){
    System.out.println("连接数据库失败!");
    System.out.println("SQLException:"+e2.getMessage());
    }
        }
    }
      

  2.   

    那怎么才能解决呢?把那句改成:ResultSet rs=stmt.executeQuery(sqlstr);这样能解决吗?
      

  3.   

    这个exception的时候是在con.close()时候出的,通常情况下在关闭connection的时候会先去找resultSet,先关闭他,再去关闭connection,你这里没有这个东西所以会出错,但出错是在关闭的时候出的,所以表已经建好了
      

  4.   

    这样能解决,一般在关闭connetion前会先关闭resultset,所以这里会出错,但是关闭的时候出错,不影响前面的建表,所以表已经建好了.
      

  5.   

    我试了,好象ResultSet rs=stmt.executeQuery(sqlstr);也不行。
      

  6.   

    我刚才试了一下,用executeUpdate()真的可以,是不是executeUpdate()和executeQuery()这两个方法功能是一样的呀?(除了返回直不同)
      

  7.   

    通常只做查询的话,使用executeQuery,更新、创建的话使用executeUpdate
      

  8.   

    executeQuery()是用来作查询的。返回resultset。而executeUpdate是用来操作数据库的,例如更新,删除,创建等,返回int,也就是此次操作影响了多少行。