封装小小JDBC
来源:互联网 发布:奇异矩阵特征值分解 编辑:程序博客网 时间:2024/06/05 02:32
import java.lang.reflect.Field;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.util.ArrayList;import java.util.List;/** * * 通用的工具类 * * @author administrator * */public class DBUtil {// 加载驱动 最新执行 只执行一次static {try {Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");} catch (Exception e) {e.printStackTrace();}}// 定字符串常量 赋值一次 程序中的副本private static final String URL = "jdbc:sqlserver://localhost:1433;databaseName=studnet";private static final String USER = "sa";private static final String PWD = "123456";// 获取数据库连接public static Connection getConn() {try {Connection conn = DriverManager.getConnection(URL, USER, PWD);return conn;} catch (Exception e) {e.printStackTrace();return null;}}/** * * 通用的关闭连接 */public static void closeConn(ResultSet rs, PreparedStatement psment,Connection conn) {try {if (rs != null) {rs.close();}} catch (Exception e) {e.printStackTrace();}try {if (psment != null) {psment.close();}} catch (Exception e) {e.printStackTrace();}try {if (conn != null) {conn.close();}} catch (Exception e) {e.printStackTrace();}}/** * 通用的查询 */public static List commnoQuery(String sql, Class cls, Object... pars) {// 获取连接Connection conn = DBUtil.getConn();PreparedStatement psment = null;ResultSet rs = null;// 创建一个list对象List list = new ArrayList();try {// 预编译sql语句psment = conn.prepareStatement(sql);// 如果又要赋值的的这么办呢?if (pars != null && pars.length != 0) {for (int i = 0; i < pars.length; i++) {psment.setString(i + 1, pars[i] + "");}}// 执行sqlrs = psment.executeQuery();// 获取数据库表的列名ResultSetMetaData data = rs.getMetaData();// 元数据while (rs.next()) {// 动态的创建对象Object obj = cls.newInstance();// 反射类中的所有属性和方法Field fds[] = cls.getDeclaredFields();// 赋值for (int i = 0; i < fds.length; i++) {// 强制设置给属性赋值fds[i].setAccessible(true);// 获取属性的类型String typeName = fds[i].getType().getName();// 获取属性的名称String attributeName = fds[i].getName();// 列名for (int j = 1; j <= data.getColumnCount(); j++) {// 获取列名String columnName = data.getColumnName(j);if (attributeName.equalsIgnoreCase(columnName)) {// 如果属性名等于列名// 赋值// 如果类型 为String类型if (typeName.endsWith("String")) {fds[i].set(obj, rs.getString(attributeName));} else if (typeName.endsWith("Integer")|| typeName.endsWith("int")) {// 如果为intfds[i].setInt(obj, rs.getInt(attributeName));} else if (typeName.endsWith("Float")|| typeName.endsWith("float")) {// 如果为flaotfds[i].setFloat(obj, rs.getFloat(attributeName));} else {System.out.println("对不起你的类型我们暂时不支持你的哦");}}}}list.add(obj);}} catch (Exception e) {e.printStackTrace();} finally {DBUtil.closeConn(rs, psment, conn);}return list;}/** * * 通用的增删改 */public static boolean commnoUpdate(String sql, Object... pars) {// 获取连接Connection conn = DBUtil.getConn();PreparedStatement psment = null;try {// 预编译sql语句psment = conn.prepareStatement(sql);// 如果又要赋值的的这么办呢?if (pars != null && pars.length != 0) {for (int i = 0; i < pars.length; i++) {psment.setString(i + 1, pars[i] + "");}}// 执行sqlint count = psment.executeUpdate();if (count > 0) {return true;}} catch (Exception e) {e.printStackTrace();} finally {DBUtil.closeConn(null, psment, conn);}return false;}/** * * 通用的查询总条数 */public static int commnoSumCount(String sql, Object... pars) {// 获取连接Connection conn = DBUtil.getConn();PreparedStatement psment = null;ResultSet rs = null;try {// 预编译sql语句psment = conn.prepareStatement(sql);// 如果又要赋值的的这么办呢?if (pars != null && pars.length != 0) {for (int i = 0; i < pars.length; i++) {psment.setString(i + 1, pars[i] + "");}}// 执行sqlrs = psment.executeQuery();if (rs.next()) {return rs.getInt(1);}} catch (Exception e) {e.printStackTrace();} finally {DBUtil.closeConn(rs, psment, conn);}return 0;}}
0 0
- 封装小小JDBC
- 小小封装
- JDBC小小实例教程
- JDBC小小实例教程
- ajax 小小封装
- JDBC封装
- jdbc 封装
- JDBC封装
- JDBC封装
- JDBC封装
- jdbc 封装
- JDBC 封装
- JDBC封装
- JDBC封装
- 封装jdbc
- MVC,EF 小小封装,mvcef封装
- Golang绑定Lua脚本,小小封装一下
- jdbc简单封装3
- 平衡二叉树插入、删除(递归算法)
- 【js学习笔记-079】-----同源策略
- Leetcode: Max Points on a Line
- 【js学习笔记-080】-----不严格的同源策略
- 25个非常实用的jQuery/CSS3应用组件
- 封装小小JDBC
- The Maximum Data Rate of a Channel
- dojo之Button篇
- 设计模式(2) 生成器模式(BUILDER)
- java给窗体或面板设置背景图片
- python笔记-Twisted 实现简单的服务器客户端程序
- 关于错误“BMXAA4195E - The Default Value field requires a value”
- launchMode的几种模式
- CAP理论概述和现状