本人初学java,现在学到jdbc的内容,有问题向大家请教:Class.forName("com.mysql.jdbc.Driver").newInstance();经查API文档,这句是创造了一个com.mysql.jdbc.Driver的实例,后面也可以调用,我的问题是这个实例创造在了什么位置,为什么没有名字亦可以调用呢?conn = DriverManager.getConnection("jdbc:mysql://localhost/menagerie?user=root&password=root");这句就是成功调用的语句。Statement stmt = null;
ResultSet rs = null;然后这里的问题是 Statement 和 ResultSet 都是接口,是不能实例化的。这里怎么看怎么像是实例化了,望明白人指点。stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT * FROM pet");

if (stmt.execute("SELECT * FROM pet")) {
rs = stmt.getResultSet();
}这里基本上明白,就是有一点:如何能够显示出表pet里面的所有内容呢?查API不得。自己写的是这样的:
System.out.println(rs);当然是不对的。望高人指点。
上面的代码来源于mysql的文档,原来是有try catch的,为了简洁 ,我去掉了,最后一句是我自己写的。

解决方案 »

  1.   

    没有名字可以调用是因为类加载到内存里了。可以供DriverManager使用。要想显示结果集:
    去网上查一下吧,挺简单。
      

  2.   

    Class.forName("com.mysql.jdbc.Driver").newInstance(); 
    这句话也可以理解成装载对mysql数据库访问的驱动吧,  当然记住就行,
    然后这里的问题是 Statement 和 ResultSet 都是接口,是不能实例化的。这里怎么看怎么像是实例化了,望明白人指点。 查API
      

  3.   

    public interface Statement
    用于执行静态 SQL 语句并返回它所生成结果的对象。 这就是API里面的解释啊,没理解上去哈!!!还是希望有高手明说一下!
      

  4.   

    Class.forName("com.mysql.jdbc.Driver").newInstance();很多东西是封装起来的,不能让你看见具体的实现。这句话的意思就是 内存中有这个实例了。。其他有可能需要这个实例的CLASS都可以去取了。  关于怎么使用的,他没有告诉你,你只能去看JDBC的源码。关于statement 和resultset的话,是接口,对。你们的老师没告诉你们JDBC仅仅只是一个标准么?标准是什么,标准就是一大堆接口捆绑在一起,能够实现各种需求的JAR包。 至于,这些接口,是由各个数据库商来实现的。你连接JDBC的时候,需要用到mysql的驱动吧对了,就是他。JVM会根据多态找到实现的方法,不用你操心。
    要想了解一个东西具体是什么样的,问不是办法,真正的办法的去看源码,或者弄一个有源码的驱动,然后自己去DEBUG
      

  5.   

    google下,找个最简单的jdbc查询操作的例子。
    等你明白了反射,和接口编程,上面问题就明白了!
      

  6.   

    while(rs.next()){
        String username=rs.getString("username");
        String password=rs.getString("password");
    }
      

  7.   

    然后这里的问题是 Statement 和 ResultSet 都是接口,是不能实例化的。这里也没有实例化啊。
    实例化 是 new Statement();这里只声明了一个接口,然后指向了它的一个可用实现而已。
      

  8.   

    Class.forName("com.mysql.jdbc.Driver").newInstance(); 后面的.new Instance() 可要可不要,没有影响。这行代码你就暂时理解为注册mysql的驱动名吧。至于想取出rs(结果集中的数据)如下代码就可以 ResultSetMetaData rsmd = rs.getMetaData();
    int numberOfColumns = rsmd.getColumnCount();
    while(rs.next()){
      for(int i = 1 ;i<=numberOfColumns ;i++){
           System.out.print(rs.getString(i));
      }
      System.out.println();
    }
    其实很简单的,楼主网上查查就行了,或者多看看API,当然上面的代码不是很好,为了方便理解就这样写了。