Jdbc封装(MySql)
来源:互联网 发布:消费积分软件 编辑:程序博客网 时间:2024/06/07 20:42
大体步骤:
1.加载Jdbc驱动(Class.forName("com.mysql.jdbc.Driver");
)
2.创建Jdbc连接(conn = DriverManager.getConnection("","","");
)
3.创建statement(
statement=conn.prepareStatemnet(sql);statement.setObject(i,objects[i-1]);
)
4.执行增删改 或 执行查询操作。
5.增删改返回boolean值,判断是否操作成功。
6.查询操作可分为 返回一条数据,或返回多条数据。
7.释放资源。
代码示例:
import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class Jdbc { private Connection conn; // 加载数据库驱动后,进行数据库连接 private PreparedStatement statement; // 连接之后构建sql语句,并执行 private ResultSet resultSet; // 结果集,执行sql语句后,返回的结果 private static Jdbc instance; // 私有构造,记载jdbc驱动 private Jdbc() { try { Class.forName("com.mysql.jdbc.Driver");// 加载jdbc驱动 } catch (ClassNotFoundException e) { e.printStackTrace(); } } // 单例模式 public static Jdbc getInstance() { if (instance == null) { instance = new Jdbc(); } return instance; } // 创建jdbc连接 private void createConnection() { try { if (conn == null || conn.isClosed()) { // Gsonadmin:工程名, root:数据库账号密码 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/Gsonadmin", "root", "root"); } } catch (SQLException e) { e.printStackTrace(); } } // 创建statement private void createStatement(String sql, Object... objects) throws SQLException { this.createConnection(); /** * 可以通过调用 Connection 对象的 preparedStatement() 方法获取 PreparedStatement 对象 * PreparedStatement 接口是 Statement 的子接口,它表示一条预编译过的 SQL 语句 * PreparedStatement 对象所代表的 SQL 语句中的参数用问号(?)来表示 */ statement = conn.prepareStatement(sql); // 统一绑定参数 if (objects != null && objects.length > 0) { for (int i = 1; i <= objects.length; i++) { // 第一个参数是要设置的 SQL 语句中的参数的索引(从 1 开始),第二个是设置的 SQL 语句中的参数的值. statement.setObject(i, objects[i - 1]); } } } /** * 执行所有增、删、改的sql操作 * * @throws SQLException */ public boolean executeUpdate(String sql, Object... objects) throws SQLException { boolean flag = false; try { this.createStatement(sql, objects); flag = statement.executeUpdate() > 0; } finally { // 释放资源 this.release(); } return flag; } /** * 返回一条记录的sql * * @throws SQLException */ public Map<String, Object> executeQuery(String sql, Object... objects) throws SQLException { Map<String, Object> row = null; try { this.createStatement(sql, objects); // 创建statement resultSet = statement.executeQuery(); // 执行query操作,返回结果赋给resultSet // 遍历resultSet if (resultSet.next()) { row = new HashMap<>(); ResultSetMetaData meta = resultSet.getMetaData(); // 得到结果集的结构信息,比如字段数、字段名等。 for (int i = 1; i < meta.getColumnCount(); i++) { // 得到结果集的列数 String lable = meta.getColumnLabel(i); // 得到每列的字段名 row.put(lable, resultSet.getObject(lable)); } } } finally { this.release(); } return row; } /** * 返回多条记录的sql * * @throws SQLException */ public List<Map<String, Object>> executeQueryForList(String sql, Object... objects) throws SQLException { List<Map<String, Object>> rows = null; try { this.createStatement(sql, objects); // 创建statement resultSet = statement.executeQuery(); // 执行query操作,返回结果赋给resultSet rows = new ArrayList<>(); Map<String, Object> row; // 遍历resultSet while (resultSet.next()) { row = new HashMap<>(); ResultSetMetaData meta = resultSet.getMetaData(); // 得到结果集的结构信息,比如字段数、字段名等。 for (int i = 1; i < meta.getColumnCount(); i++) { // 得到结果集的列数 String lable = meta.getColumnLabel(i); // 得到每列的字段名 row.put(lable, resultSet.getObject(lable)); } rows.add(row); } } finally { this.release(); } return rows; } /** * 释放资源 */ private void release() { try { if (resultSet != null) { resultSet.close(); } } catch (SQLException e) { e.printStackTrace(); } try { if (statement != null) { statement.close(); } } catch (SQLException e) { e.printStackTrace(); } try { if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } }}
关键:反射+泛型。
0 0
- Jdbc封装(MySql)
- Java jdbc mysql的封装类
- JDBC连接mysql数据库CRUD封装类
- Jsp+Jdbc+mysql封装分页功能
- 彻底封装JDBC操作MySQL的连接。
- jdbc封装mySQL数据库增删改查
- JDBC封装
- jdbc 封装
- JDBC封装
- JDBC封装
- JDBC封装
- jdbc 封装
- JDBC 封装
- JDBC封装
- JDBC封装
- 封装jdbc
- 未封装的JDBC(MySQL)数据库操作例子
- JDBC连接MySQL-基于MVC架构进行简单封装
- POJ 1287
- Studio 中 debug的使用
- self和super的深入解析
- VC 多个定时器
- 最短路径
- Jdbc封装(MySql)
- 清华梦的粉碎—写给清华大学的退学申请 /王垠
- 深入理解计算机系统:优化程序性能
- 前端(1)---浏览器兼容
- Spring scope属性详解
- ARM内存读取与MMU
- frameset内嵌框架集
- minJump
- Java面向对象基础(封装,多态)=09/13