您的位置:首页 > 数据库

数据库操作的桥梁-JDBC学习笔记

2018-03-22 11:53 337 查看

数据库操作的桥梁-JDBC学习笔记

    JDBC代表Java数据库连接(Java Database Connectivity),它是用于Java编程语言和数据库之间的数据库无关连接的标准Java API,换句话说:JDBC是用于在Java语言编程中与数据库连接的API。



JDBC API提供了以下接口和类:
DriverManager: 这个类管理数据库驱动程序的列表。确定内容是否符合从Java应用程序使用的通信子协议正确的数据库驱动程序的连接请求。识别JDBC在一定子协议的第一个驱动器将被用来建立数据库连接。
Driver: 此接口处理与数据库服务器通信。很少直接直接使用驱动程序(Driver)对象,一般使用
DriverManager
中的对象,它用于管理此类型的对象。它也抽象与驱动程序对象工作相关的详细信息
Connection : 此接口与接触数据库的所有方法。连接对象表示通信上下文,即,与数据库中的所有的通信是通过此唯一的连接对象。
Statement : 可以使用这个接口创建的对象的SQL语句提交到数据库。一些派生的接口接受除执行存储过程的参数。
ResultSet: 这些对象保存从数据库后,执行使用
Statement
对象的SQL查询中检索数据。它作为一个迭代器,可以通过移动它来检索下一个数据。
SQLException: 这个类用于处理发生在数据库应用程序中的任何错误。
构建JDBC应用程序涉及以下六个步骤 -导入包:需要包含包含数据库编程所需的JDBC类的包。 大多数情况下,使用
import java.sql.*
就足够了。
注册JDBC驱动程序:需要初始化驱动程序,以便可以打开与数据库的通信通道。
打开一个连接:需要使用
DriverManager.getConnection()
方法创建一个
Connection
对象,它表示与数据库的物理连接。
执行查询:需要使用类型为
Statement
的对象来构建和提交SQL语句到数据库。
从结果集中提取数据:需要使用相应的
ResultSet.getXXX()
方法从结果集中检索数据。
清理环境:需要明确地关闭所有数据库资源,而不依赖于JVM的垃圾收集。
JDBC驱动程序在JDBC API中实现定义的接口,用于与数据库服务器进行交互。例如,使用JDBC驱动程序,可以通过发送SQL或数据库命令,然后使用Java接收结果来打开数据库连接并与数据库进行交互。JDK附带的
Java.sql
包包含各种类,其类的行为被定义,实现在第三方驱动程序中完成。 第三方供应商在其数据库驱动程序中实现
java.sql.Driver
接口。MySQL 
Connector/J
驱动程序是基于纯Java的驱动程序通过套接字连接与供应商的数据库直接通信。 这是数据库可用的最高性能驱动程序,通常由供应商自己提供。在使用jdbc时,首先需要注册jdbc驱动,通常我们通过注册驱动程序最常见的方法是使用Java的
Class.forName()
方法,将驱动程序的类文件动态加载到内存中,并将其自动注册。这个方法是推荐使用的方法,因为它使驱动程序注册可配置和便携。以下示例使用
Class.forName()
注册Oracle驱动程序 -
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch(ClassNotFoundException ex) {
System.out.println("Error: unable to load driver class!");
System.exit(1);
}


数据库厂家提供的驱动oracle.jdbc.driver.OracleDriver或者com.mysql.jdbc.Driver都实现了java.sql.Driver接口,
注册驱动程序是将Oracle或mysql驱动程序的类文件加载到内存中的过程,因此可以将其用作JDBC接口的实现。Class.forName()方法将类文件
加载至内存中, 之后完成类的初始化, 从而可以实现将厂商提供的驱动注册至DriverManager中。 static {
try {
java.sql.DriverManager.registerDriver(new Driver());
} catch (SQLException E) {
throw new RuntimeException("Can't register driver!");
}
}加载驱动程序后,可以使用
DriverManager.getConnection()
方法建立连接。 为了方便参考,这里列出三个重载的
DriverManager.getConnection()
方法 -
getConnection(String url)

getConnection(String url, Properties prop)

getConnection(String url, String user, String password)

这里每个格式都需要一个数据库URL。


在JDBC程序结束之后,显式地需要关闭与数据库的所有连接以结束每个数据库会话, connection.closer();
当获得了与数据库的连接后,就可以与数据库进行交互了。 JDBC 
Statement
CallableStatement
PreparedStatement
接口定义了可用于发送SQL或PL/SQL命令,并从数据库接收数据的方法和属性。



无论哪种对象,在执行完sql的操作之后,都需要显式关闭。SQL语句执行后从数据库查询读取数据,返回的数据放在结果集中。 
SELECT
语句用于从数据库中选择行并在结果集中查看它们的标准方法。 
java.sql.ResultSet
接口表示数据库查询的结果集。
ResultSet
对象维护指向结果集中当前行的游标。 术语“结果集”是指包含在
ResultSet
对象中的行和列数据。
ResultSet
接口中有几种涉及移动光标的方法,包括 


package learn.zhujq.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

/**
* @author jinQiang.zhu
*
*/
public class jdbcDemo1 {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/learning";

// Database credentials -- 数据库名和密码自己修改
static final String USER = "root";
static final String PASS = "123456";

public static void main(String[] args) {
Connection conn = null;
Statement stat = null;
try {
//STEP 2: Register JDBC driver,
//在Class.forName加载完驱动类,开始执行静态初始化代码时,会自动新建一个Driver的对象,
//并调用DriverManager.registerDriver把自己注册到DriverManager中去。
Class.forName("com.mysql.jdbc.Driver");
//STEP 3: Open a connection
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL, USER, PASS);

//STEP 4: Execute a query
System.out.println("Creating statement...");
stat = conn.createStatement();
String sql = "select * from group_space";
ResultSet rs = stat.executeQuery(sql);

System.out.println("rs=" + rs);
while (rs.next()) {
Long groupId = rs.getLong("GROUP_ID");
System.out.println("groupId=" + groupId);
}
//STEP 6: Clean-up environment
rs.close();
stat.close();
conn.close();

} catch (Exception e) {
e.printStackTrace();
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: