考量了许久,决定把最近学的jdbc坐下总结,慢慢来吧,一天总结一小点,既然拖了那么久。
好,下面开始总结。(这里以mysql数据库为例)
首先就要说的是jdbc中注册驱动,首先导入对应的包,例如mysql-connector-java-5.0.8-bin.jar。
DiverManager.class里有个属性drivers,它实际上是一个vector。可在列表中加入很多驱动,当DriverManager去取连接的时候,若果drivers里有很多驱动,它会把drivers里面的各个驱动的url和创建连接时传进来的url逐一比较,遇到对应的url,则建立连接。
注册驱动有三种方式:
(一)DriverManager.registerDriver(new com.mysql.jdbc.Driver());
会造成DriverManager中产生两个一样的驱动,并会对具体的驱动类产生依赖。
具体来说就是:
1,加载的时候注册一次驱动(原因请看第三点),实例化的时候又注册一次。所以两次。
2,由于实例化了com.mysql.jdbc.Driver.class,导致必须导入该类(说白了,就是要把这个类import进去),从而具体驱动产生了依赖。不方便扩展代码。
(二)System.setProperty("jdbc.drivers","com.mysql.jdbc.Driver");
如果要注册多个驱动,则System.setProperty("jdbc.drivers","com.mysql.jdbc.Driver:com.oracle.jdbc.Driver");
虽然不会对具体的驱动类产生依赖;但注册不太方便,所以很少使用。
(三)Class.forName("com.mysql.jdbc.Driver");
推荐这种方式,不会对具体的驱动类产生依赖。
其实这个只是把com.mysql.jdbc.Driver.class这个类装载进去,但是关键就在于,在
这个类中,有个静态块,如下:
static{
try{
java.sql.DriverManager.registerDriver(new Driver());
}catch(SQLException e){
throw new RuntimeException("can't register driver!");
}
}
就是因为这个代码块,让类在加载的时候就把驱动注册进去了!(绕了半天的圈子,其实就是为了说明这个问题,累啊!)
写了一下,自己有那么点提高,但是真的很花时间啊,坚持!
分享到:
相关推荐
2. 注册驱动:`Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");` 3. 创建数据库连接:`Connection conn = DriverManager.getConnection(url, username, password);` 4. 执行SQL操作,如查询、插入...
2. **DriverManager**: 驱动管理器,负责注册和管理JDBC驱动。 3. **Driver**: JDBC驱动,实现了特定数据库厂商的接口,用于与数据库通信。 4. **Connection**: 数据库连接,用于执行SQL语句和管理事务。 5. **...
这段代码首先通过`Class.forName()`注册了SQLite JDBC驱动,然后使用`DriverManager.getConnection()`方法建立到SQLite数据库的连接。连接字符串`jdbc:sqlite:/path/to/your/database/file`指定了数据库文件的位置。...
2. **注册驱动**:使用`Class.forName()`方法加载并注册JDBC驱动,例如`Class.forName("com.mysql.jdbc.Driver")`。 3. **建立连接**:通过`DriverManager.getConnection()`方法创建数据库连接,需要提供数据库URL...
- **保存已注册驱动**:`DriverManager`是一个核心组件,用于管理所有已注册的JDBC驱动。它维护了一个`Vector<DriverInfo>`来存储这些驱动的信息。 - **`DriverInfo`结构**:`DriverInfo`类用于存储每个注册驱动的...
- 注册驱动:使用`Class.forName()`方法加载驱动。 - 建立连接:使用`DriverManager.getConnection()`方法创建数据库连接,输入正确的URL、用户名和密码。 - 执行SQL:通过`Connection`对象创建`Statement`或`...
总结,JDBC MSSQL驱动使得Java应用能够高效、安全地与Microsoft SQL Server进行通信。理解并熟练运用JDBC API,以及正确配置和管理数据库连接,是开发任何Java数据库应用程序的基础。在实际开发中,我们应遵循最佳...
注意,手动注册驱动后,记得在应用结束时使用`DriverManager.deregisterDriver()`来取消注册,避免资源泄露。 最后,从Java 6开始,引入了一种更为简洁的驱动注册机制。如果驱动的JAR文件位于应用的类路径中,并且...
- **DriverManager**: 提供了注册和获取数据库驱动的方法,是建立数据库连接的入口点。 - **Connection**: 表示到数据库的物理连接,通过DriverManager.getConnection()方法获得。 - **Statement**: 用于执行静态...
2. **注册驱动**:使用正确的类名注册驱动,例如`com.mysql.cj.jdbc.Driver`。 3. **自动注册**:在`META-INF/services/java.sql.Driver`文件中添加正确的驱动类名。 ##### (三)Classpath未包含MySQL驱动 **错误...
2. 注册驱动:`Class.forName("oracle.jdbc.driver.OracleDriver");` 3. 创建连接:`Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@hostname:port/service_name", "username", "password");` ...
2. 注册JDBC驱动(对于SQL Server 2000,可能需要使用特定的注册方法,因为旧版的驱动可能不支持自动注册): ```java Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); ``` 3. 建立数据库连接...
总结来说,JDBC驱动程序是Java应用程序访问数据库的核心组件,它们为不同数据库系统提供了统一的API,简化了开发工作。了解并掌握SQL Server、DB2、Oracle和MySQL的JDBC驱动使用,对于进行数据库操作的Java开发者至...
- 考虑使用JDBC 4.1及以上版本,它引入了自动注册驱动和try-with-resources语法,使代码更简洁、安全。 总结,MySQL的JDBC驱动包是Java开发与MySQL数据库交互的核心组件,理解其工作原理和使用方法对于任何Java...
1. **JDBC的定义**: JDBC 是由Sun Microsystems(现已被Oracle收购)定义的一组用于在Java应用程序中访问数据库的接口和类,它是一个标准的API,允许Java开发者通过编写Java代码来连接、查询和操作数据库。 2. **...
2. 注册JDBC驱动(对于Oracle JDBC Thin驱动,注册通常不是必需的,因为Java 6及更高版本会自动完成): ```java Class.forName("oracle.jdbc.driver.OracleDriver"); ``` 3. 建立数据库连接: ```java String url ...
### JDBC知识点总结 #### 一、JDBC概述 **简介** JDBC (Java Database Connectivity) 是由 SUN 公司提供的一套标准规范,用于在 Java 应用程序中访问关系型数据库。它允许 Java 程序通过统一的 API 与不同的...
3. **注册驱动**:在Java代码中,使用`Class.forName()`方法注册驱动,例如`Class.forName("com.mysql.jdbc.Driver")`。但请注意,从JDBC 4.0开始,大部分驱动会自动注册,所以这个步骤在很多情况下可以省略。 4. *...
1. **注册JDBC驱动程序的三种方式**: - **静态注册**:通过`Class.forName("com.mysql.jdbc.Driver")`,这会在运行时加载指定的数据库驱动类。这种方法不推荐,因为它将驱动名称硬编码在代码中,不利于维护。 - *...
这会触发驱动的静态初始化,从而注册到JDBC驱动管理器。 - 从Java 6开始,可以使用服务提供者接口(SPI)自动加载驱动,无需显式调用`Class.forName()`。 3. **建立数据库连接** - 使用`DriverManager.get...