使用JDBC对数据库进行操作的通用步骤
一、JDBC(Java DataBase Connectivity)是什么?
使用面向对象的语言操作各种关系型数据库,持久化数据的一种技术。JDBC是连接数据库的标准。 学习JDBC其实就是学习JDBC API。JDBC API 是定义访问关系型数据库中数据的标准,是Java编程语言的类和接口的集合。二、JDBC编程的六大步骤与使用
使用JDBC对数据库进行操作的通用步骤,应该包含以下几步:
- 注册驱动
- 获取数据库连接
- 创建 Statement 类型或者子类型对象
- 执行sql
- 处理结果(如果需要的话,一般查询语句必须要处理)
- 关闭资源
代码如下(示例):
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class FirstJDBC {
public static void main(String[] args) throws Exception {
//1、注册驱动:目的告诉应用程序,要连接什么样的数据库
//导入oracle驱动类的jar包 ojdbc14.jar
//(jar包所在地址:C:\oraclexe\app\oracle\product\10.2.0\server\jdbc\lib)
//参数是驱动类的名字oracle.jdbc.driver.OracleDriver,
//不同的数据库驱动的名字不同
Class.forName("oracle.jdbc.driver.OracleDriver");
//2、获取与数据库的连接(Connection)
//(通过Driver接口的connect()方法,获取数据库的连接对象)
//第一个参数url:唯一区分数据库的地址
//(thin:第四类驱动类型 1521端口号 XE数据库的名字)
//第二、三个参数:用户名、密码
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "briup", "briup");
//System.out.println(conn);
//【以上部分,如果是其他数据库的话,只要更改对应的驱动类的名字;
//用来唯一区分数据库的地址,用户名和密码即可】
//3、获取Statement对象,可以用来执行sql语句
Statement st=conn.createStatement();
//4、执行sql语句
String sql="select id,last_name,salary,start_date from s_emp";
ResultSet rs=st.executeQuery(sql);
//5、处理结果集(ResultSet)
//循环判断是否有下一个元素,有就往下走一步
while(rs.next()) {
//根据字段名获取每行字段的数据
//id
int id = rs.getInt("id");
//System.out.println(id);
//last_name
String last_name = rs.getString("last_name");
//salary
double salary = rs.getDouble("salary");
//start_date
Date date = rs.getDate("start_date");
System.out.println(id +" "+last_name +" "+salary+" "+date);
}
//6、关闭资源,先开的后关,后开的先关
//最后关Connection对象
//一旦Connection关闭,其他的资源取不到
if(rs!=null) rs.close();
if(st!=null) st.close();
if(conn!=null) conn.close();
}
}
三、多种方式实现JDBC使用的六大步骤
代码如下(示例):
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import oracle.jdbc.driver.OracleDriver;
public class JDBCStep {
public static void main(String[] args){
Statement st=null;
Connection conn=null;
try {
//1、注册驱动
//1-1 第一种方式:通过反射(最常用)
Class.forName("oracle.jdbc.driver.OracleDriver");
/*1-2
//1-2 第二种方式:通过对象(很少用)
Driver driver=new OracleDriver();
DriverManager.registerDriver(driver);
*/
/*1-3
//1-3 第三种方式:使用jvm系统属性(-jdbc.drivers)(不常用)
//1-3-1在运行的时候指定参数 -Djdbc.drivers=oracle.jdbc.driver.OracleDriver
//具体过程:eclipse中右击---->Run As ----->Run Configurations------>Arguments------>
VM arguments---->输入:-Djdbc.drivers=oracle.jdbc.driver.OracleDriver--->Run
//或 1-3-2使用System来指定参数
System.setProperty("jdbc.drivers","oracle.jdbc.driver.OracleDriver");
*/
//2、获取连接Connection
//2-1 第一种方式:常用
conn=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:XE", "briup", "briup");
System.out.println(conn);
/*2-2
//2-2 第二种方式:从Driver对象获取连接对象
//此必须与第一步的第二种方式连用
Properties info=new Properties();
info.setProperty("user", "briup");
info.setProperty("password", "briup");
Connection conn=driver.connect("jdbc:oracle:thin:@127.0.0.1:1521:XE", info);
System.out.println(conn);
*/
//3、创建 Statement 类型或者子类型对象,
st=conn.createStatement();
//4、执行sql语句
String sql="insert into s_emp(id,last_name)"
+"values(1000,'张三')";
int d = st.executeUpdate(sql);
System.out.println(d);
//第一种方式:
//执行查询语句 返回一个Set集合,结果集 st.executeQuery(sql);
//第二种方式:
//执行增、删、改,返回一个int类型的数据,拿到/操作/影响了多少行数据 st.executeUpdate(sql);
//第三种方式:
//执行任何的sql语句,返回类型是boolean,判断是否有结果集(效率低) st.execute(sql);
//5、处理结果(一般是处理select语句的结果集)
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
//6、关闭资源,先开的后关
if(st!=null)
try {
st.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(conn!=null)
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}