时间:2021-07-01 10:21:17 帮助过:15人阅读
第三种虽然也可以脱离,但是方法参数设置相对来说较为复杂,它可以设置多个驱动,所以在加载单个驱动时,一般采用第一种方法。
第一种方法是通过Class把类先装载到java的虚拟机中,并没有创建Driver类的实例。好处在于能够在编译时不依赖于特定的JDBC Driver库,也就是减少了项目代码的依赖性,而且也很容易改造成从配置文件读取JDBC配置,从而可以在运行时动态更换数据库连接驱动。
1、Class.forName(“com.mysql.jdbc.Driver”)最常用
1 try{ 2 Class.forName("com.mysql.jdbc.Driver");//加载数据库驱动 3 String url="jdbc:mysql://localhost:3306/databasename";//数据库连接子协议 4 Connection conn=DriverManager.getConnection(url,"username","password"); 5 Statement stmt=conn.createStatement(); 6 ResultSet rs=stmt.executeQuery("select * from tablename"); 7 while(rs.next()){//不断指向下一条记录 8 System.out.println("DeptNo:"+rs.getInt(1)); 9 System.out.println("\tDeptName:"+rs.getString(2)); 10 System.out.println("\tLOC:"+rs.getString(3)); 11 } 12 rs.close(); 13 stmt.close(); 14 conn.close(); 15 }catch(ClassNotFoundException e){ 16 System.out.println("找不到指定的驱动程序类!"); 17 }catch(SQLException e){ 18 e.printStackTrace(); 19 }
2、DriverManager,看起来比较直观的一种方式,注册相应的db的jdbc驱动,3在编译时需要导入对应的lib
1 try{ 2 new com.mysql.jdbc.Driver();//创建driver对象,加载数据库驱动 3 String url="jdbc:mysql://localhost:3306/databasename";//数据库连接子协议 4 Connection conn=DriverManager.getConnection(url,"username","password"); 5 Statement stmt=conn.createStatement(); 6 ResultSet rs=stmt.executeQuery("select * from tablename"); 7 while(rs.next()){//不断指向下一条记录 8 System.out.println("DeptNo:"+rs.getInt(1)); 9 System.out.println("\tDeptName:"+rs.getString(2)); 10 System.out.println("\tLOC:"+rs.getString(3)); 11 } 12 rs.close(); 13 stmt.close(); 14 conn.close(); 15 }catch(SQLException e){ 16 e.printStackTrace(); 17 }
还可以按如下方式注册:
DriverManager.register(new com.mysql.jdbc.Driver());
但是该方式注册了两次驱动,所以不建议使用。
3、通过系统的属性设置System.setProperty(“jdbc.driver”,”com.mysql.jdbc.Driver”);
1 try{ 2 System.setProperty("jdbc.driver","com.mysql.jdbc.Driver");//系统属性指定数据库驱动 3 String url="jdbc:mysql://localhost:3306/databasename";//数据库连接子协议 4 Connection conn=DriverManager.getConnection(url,"username","password"); 5 Statement stmt=conn.createStatement(); 6 ResultSet rs=stmt.executeQuery("select * from tablename"); 7 while(rs.next()){//不断指向下一条记录 8 System.out.println("DeptNo:"+rs.getInt(1)); 9 System.out.println("\tDeptName:"+rs.getString(2)); 10 System.out.println("\tLOC:"+rs.getString(3)); 11 } 12 rs.close(); 13 stmt.close(); 14 conn.close(); 15 }catch(SQLException e){ 16 e.printStackTrace(); 17 }
java加载jdbc驱动三种方式的比较
标签:for 读取 result creat 方式 database cli eve gets