概述
1. 简单五步
1、加载驱动程序
Class.forName(DriverClass);
2、连接数据库
Connection connect = DriverManager.getConnection(DataBase URL);
3、创建语句
Statement statement = connect.createStatement();
4、执行语句
ResultSet rs = statement.executeQuery(SQL语句);
5、处理ResultSet
2.JdbcUtil.java
package com.rimi.project.util;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import javax.sql.rowset.CachedRowSet;
import com.sun.rowset.CachedRowSetImpl;
public class JDBCUtil {
// 访问数据库的用户名
private static String userName = null;
// 访问数据库的密码
private static String password = null;
// 使用jdbc的数据库驱动
private static String driver = null;
// 访问数据库的url格式
// jdbc代表协议,mysql代表子协议 localhost代表本地ip地址 3306代表端口 j1806代表指定的数据库名
// rewriteBatchedStatements 确定是否开启批处理
private static String url = null;
static {
// 在静态代码块中读取properties文件
// getClassLoader 定位类加载路径
// getResourceAsStream 以字节流的方式读出指定的文件
InputStream inputStream = JDBCUtil.class.getClassLoader().getResourceAsStream("datasource.properties");
// 利用Properties 工具类将输入字节流进行解析
Properties properties = new Properties();
try {
properties.load(inputStream);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
// 利用properties工具类取出配置文件信息
// getProperty方法根据配置文件中的变量名来获取变量值
driver = properties.getProperty("driver");
url = properties.getProperty("url");
userName = properties.getProperty("userName");
password = properties.getProperty("password");
try {
inputStream.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
// 第一步,注册加载驱动
// Class.forName 将指定路径下的类,加载进java虚拟机
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
// 第二步,获取默认的数据库名和用户名去建立数据库连接
public static Connection getConnection() {
return getConnection(url,userName,password);
}
// 使用指定的用户名和数据库名建立连接
public static Connection getConnection(String url,String userName,String password) {
Connection connection = null;
try {
connection = DriverManager.getConnection(url, userName, password);
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
// 第三步,建立普通通道
public static Statement createStatement(Connection connection) {
Statement statement = null;
try {
statement = connection.createStatement();
} catch (SQLException e) {
e.printStackTrace();
}
return statement;
}
// 第四步,采用指定的数据库连接去执行sql并返回结果
public static boolean update(String sql,Connection connection) {
Statement statement = createStatement(connection);
int row = 0;
try {
row = statement.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
} finally {
close(null, statement, connection);
}
if(row > 0) {
return true;
} else {
return false;
}
}
// 根据提供的sql,使用默认的数据库连接 执行sql并返回结果
public static boolean update(String sql) {
Connection connection = getConnection();
return update(sql,connection);
}
// 使用指定的连接,执行查询操作
public static ResultSet query(String sql,Connection connection) {
// 建立普通通道
Statement statement = createStatement(connection);
ResultSet resultSet = null;
CachedRowSet cachedRowSet = null;
try {
// 普通通道执行查询操作
resultSet = statement.executeQuery(sql);
// 离线结果集合,允许将ResultSet数据拷贝到java虚拟机内存,即使连接中断,数据不会丢失
cachedRowSet = new CachedRowSetImpl();
// 拷贝数据到离线结果集合
cachedRowSet.populate(resultSet);
} catch (SQLException e) {
e.printStackTrace();
} finally {
close(resultSet, statement, connection);
}
return cachedRowSet;
}
// 使用默认的连接执行查询操作
public static ResultSet query(String sql) {
Connection connection = getConnection();
return query(sql,connection);
}
// 建立预编译通道
public static PreparedStatement createPreparedStatement(Connection connection, String sql) {
PreparedStatement preparedStatement = null;
try {
preparedStatement = connection.prepareStatement(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return preparedStatement;
}
// 绑定参数
public static void bundleParam(PreparedStatement preparedStatement, String[] params) {
if(null != params) {
for(int index = 0; index < params.length; index++) {
// 数组元素下标从0开始,而绑定参数,第一个参数下标为1,需要加1
try {
preparedStatement.setString(index+1, params[index]);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
// 根据指定的数据库连接,利用预编译通道执行sql
public static boolean preUpdate(String sql, String[] params, Connection connection) {
// 创建预编译通道
PreparedStatement preparedStatement = createPreparedStatement(connection, sql);
// 给预编译通道绑定参数
bundleParam(preparedStatement, params);
int row = 0;
try {
// 执行sql,返回受影响的行数
row = preparedStatement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
close(null, preparedStatement, connection);
}
if(row > 0) {
return true;
} else {
return false;
}
}
// 使用默认的连接,执行预通道sql
public static boolean preUpdate(String sql, String[] params) {
// 获取默认连接
Connection connection = getConnection();
return preUpdate(sql, params, connection);
}
public static ResultSet preSelect(String sql,String[] params, Connection connection) {
// 通过指定连接,建立sql预编译通道
PreparedStatement preparedStatement = createPreparedStatement(connection, sql);
// 绑定参数
bundleParam(preparedStatement, params);
ResultSet resultSet = null;
CachedRowSet cachedRowSet = null;
try {
resultSet = preparedStatement.executeQuery();
// 创建一个离线结果集
cachedRowSet = new CachedRowSetImpl();
// 拷贝数据到离线结果集
cachedRowSet.populate(resultSet);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
close(resultSet, preparedStatement, connection);
}
return cachedRowSet;
}
public static ResultSet preSelect(String sql,String[] params) {
Connection connection = getConnection();
return preSelect(sql,params,connection);
}
public static void close(ResultSet resultSet, Statement statement, Connection connection ) {
// 第五步 释放资源
// try {
// if(null != resultSet) {
// resultSet.close();
// }
// } catch (SQLException e) {
// e.printStackTrace();
// } finally {
// try {
// if(null != preparedStatement) {
// preparedStatement.close();
// }
// } catch (SQLException e) {
// e.printStackTrace();
// } finally {
// try {
// if(null != connection) {
// connection.close();
// }
// } catch (SQLException e) {
//
// e.printStackTrace();
// }
// }
//
// }
//
if(null != resultSet) {
try {
resultSet.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(null != statement) {
try {
statement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(null != connection) {
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
最后
以上就是高高飞机为你收集整理的JDBC的五步的全部内容,希望文章能够帮你解决JDBC的五步所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复