貌似只要Connection c = DriverManager.getConnection("jdbc:mysql://localhost/test?user=root&password=root");就能连接数据库。
Class.forName("org.gjt.mm.mysql.Driver").newInstance()是不是不需要了?

解决方案 »

  1.   

    Class.forName("****")是永远需要的。
    因为它是真正的jdbc Driver class。否则DriverManager就不知道用哪个Driver了。如果你很感兴趣jdbc是如何实现的,可以下一份jdk的源码,读读DriverManager.getConnection的方法实现就知道了。
      

  2.   

    请看这段话(摘自javadoc,类 DriverManager页面):
    DriverManager 类的方法 getConnection 和 getDrivers 已经得到提高以支持 Java Standard Edition Service Provider 机制。 JDBC 4.0 Drivers 必须包括 META-INF/services/java.sql.Driver 文件。此文件包含 java.sql.Driver 的 JDBC 驱动程序实现的名称。例如,要加载 my.sql.Driver 类,META-INF/services/java.sql.Driver 文件需要包含下面的条目:  my.sql.Driver
    应用程序不再需要使用 Class.forName() 显式地加载 JDBC 驱动程序。当前使用 Class.forName() 加载 JDBC 驱动程序的现有程序将在不作修改的情况下继续工作。 
      

  3.   

    这个,大概是jdk1.6或以后吧。你如果用的是jdbc 4.0 drivers, 那"org.gjt.mm.mysql.Driver"也太陈旧了。这个是非常旧的mysql jdbc driver。jdk1.5里边应该还没有jdbc 4.0 。你的提问最好连同jdk的版本号一起提供。
      

  4.   

    呵呵,是jdk1.6update18
    1. 我如何知道我的jdbc版本?
    2. 在navicat for mysql 9 中,能不能手动添加记录,不用写insert into语句?
      

  5.   


    1.你说摘自javadoc,这个javadoc就有对应的jdk的版本,于是你更应该查出它的适用范围。我不知道mysql最新的jdbc driver是否已经实现了JDBC 4.0(或者部分实现:-0, 待查)2. navicat for mysql中,直接双击一个表,然后就可以点击"+"添加记录了。非常简单啊。