Java数据库基本操作代码

package cn.rt.util;

 

import java.io.IOException;

import java.io.InputStream;

import java.lang.reflect.InvocationTargetException;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.sql.SQLException;

扫描二维码关注公众号,回复: 3736431 查看本文章

import java.sql.Statement;

import java.util.ArrayList;

import java.util.List;

import java.util.Properties;

 

import org.apache.commons.beanutils.BeanUtils;

 

/**

 * jdbc工具类

 */

public final class JdbcUtils {

       private static String driver;

       private static String url;

       private static String user;

       private static String password;

 

       static {

              try {

                     Properties ps = new Properties();

InputStream instream = jdbcUtils.class.getResourceAsStream("/jdbc.properties");

//jdbc.properties中包含连接数据库的信息

                     ps.load(instream); // 加载属性文件

                     driver = ps.getProperty("driver");

                     url = ps.getProperty("url");

                     user = ps.getProperty("user");

                     password = ps.getProperty("password");

              } catch (IOException e) {

                     e.printStackTrace();

              }

              try {

                     Class.forName(driver);// 加载驱动

              } catch (ClassNotFoundException e) {

                     e.printStackTrace();

              }

       }

 

       /**

        * 获取数据库连接对象

        *

        * @return 连接对象

        */

       public static Connection getConn() {

              Connection conn = null;

              try {

                     conn = DriverManager.getConnection(url, user, password);

              } catch (SQLException e) {

                     e.printStackTrace();

              }

              return conn;

       }

 

       /**

        * 查询多个对象

        *

        * @param clazz

        *            要查询的对象类型

        * @param sql

        *            查询语句

        * @return 查询出的对象组成的集合

        */

       public static List getList(Class clazz, String sql) {

              List list = new ArrayList();

              Connection conn = getConn();

              PreparedStatement st = null;

              ResultSet rs = null;

 

              try {

                     st = conn.prepareStatement(sql);

                     rs = st.executeQuery();// 执行查询

                     ResultSetMetaData metaData = rs.getMetaData();

                     while (rs.next()) { // 遍历查询出的每个结果 并封装对象

                            Object obj = clazz.newInstance();

                            for (int i = 1; i <= metaData.getColumnCount(); i++) {

BeanUtils.copyProperty(obj, metaData.getColumnName(i), rs.getObject(i));

                            }

                            list.add(obj); // 将对象添加到集合

                     }

              } catch (SQLException e) {

                     e.printStackTrace();

              } catch (InstantiationException e) {

                     e.printStackTrace();

              } catch (IllegalAccessException e) {

                     e.printStackTrace();

              } catch (InvocationTargetException e) {

                     e.printStackTrace();

              } finally {// 关闭

                     close(rs, st, conn);

              }

              return list;

       }

 

       /**

        * 根据标识查询出唯一一个对象

        *

        * @param clazz

        *            要查询的类型

        * @param sql

        *            查询语句

        * @return 查询出的对象  where id=?

        */

       public static Object getObjectById(Class clazz, String sql,Object id) {

              Connection conn = getConn();

              PreparedStatement st = null;

              ResultSet rs = null;

              Object obj = null;

              try {

                     st = conn.prepareStatement(sql);

                     st.setObject(1,id);

                     rs = st.executeQuery();

                     ResultSetMetaData metaData = rs.getMetaData();

                     if (rs.next()) { // 如果可以查询出数据

                            obj = clazz.newInstance(); // 实例化对象

                            for (int i = 1; i <= metaData.getColumnCount(); i++) {

// 使用工具类设置各个列的值到对象  注意:列名和属性名要一致

BeanUtils.copyProperty(obj, metaData.getColumnName(i), rs.getObject(i));

                            }

                     }

              } catch (InstantiationException e) {

                     e.printStackTrace();

              } catch (IllegalAccessException e) {

                     e.printStackTrace();

              } catch (SQLException e) {

                     e.printStackTrace();

              } catch (InvocationTargetException e) {

                     e.printStackTrace();

              } finally {

                     close(rs, st, conn);

              }

              return obj;

       }

 

       /**

        * 获取行数

        *

        * @param sql

        *            查询行数的sql语句

        * @return 查询的结果

        */

       public static int getListCount(String sql) {

              int result = 0;

              Connection conn = getConn();

              PreparedStatement st = null;

              ResultSet rs = null;

              try {

                     st = conn.prepareStatement(sql);

                     rs = st.executeQuery();// 执行查询

                     ResultSetMetaData metaData = rs.getMetaData();

                     if (rs.next()) {

                            result = rs.getInt(1);// 记录查询出的结果

                     }

              } catch (SQLException e) {

                     e.printStackTrace();

              } finally {

                     close(rs, st, conn);

              }

              return result;

       }

 

       /**

        * 执行增删改的方法

        *

        * @param sql

        *            增删改的语句

        * @param ps

        *            动态数组 语句中的参数

        * @return 影响的行数

        */

       public static int executeSQL(String sql, Object... ps) {

              Connection conn = getConn();

              int executeUpdate = 0;

              PreparedStatement prepareStatement = null;

              try {

                     prepareStatement = conn.prepareStatement(sql);

                     for (int i = 1; i <= ps.length; i++) {// 设置参数

                            prepareStatement.setObject(i, ps[i - 1]);

                     }

                     executeUpdate = prepareStatement.executeUpdate();

 

              } catch (SQLException e) {

                     e.printStackTrace();

              } finally {

                     close(null, prepareStatement, conn);

              }

              return executeUpdate;

       }

 

       /**

        * 事务管理

        *

        * @param sqlArray

        *            需要在同一个事务中处理的Sql语句

        */

       public static void executeTran(String... sqlArray) {

              Connection conn = getConn();

              PreparedStatement prepareStatement = null;

              try {

                     conn.setAutoCommit(false);// 关闭自动提交

                     if (sqlArray.length > 0) {

                            for (String sql : sqlArray) {

                                   prepareStatement = conn.prepareStatement(sql);

                                   prepareStatement.execute();

                            }

                     }

                     conn.commit();// 所有操作执行结束 提交事务

                     conn.setAutoCommit(true);// 打开自动事务提交

              } catch (SQLException e) {// 如果出现异常

                     try {

                            conn.rollback();// 回滚

                     } catch (SQLException e1) {

                            e1.printStackTrace();

                     }

                     e.printStackTrace();

              } finally {

                     close(null, prepareStatement, conn);

              }

       }

 

       /**

        *关闭资源

        * @param rs 结果集

        * @param st 命令行对象

        * @param conn 数据库连接

        */

       private static void close(ResultSet rs, Statement st, Connection conn) {

              try {

                     if (rs != null) {

                            rs.close();

                     }            

                     if (st != null) {

 

                            st.close();

                     }

                     if (conn != null) {

                            conn.close();

                     }

              } catch (SQLException e) {

                     e.printStackTrace();

              }

 

       }

}

 

 

 

jdbc.properties文件内容:

driver=com.mysql.jdbc.Driver     ///连接到MySQL的数据库

url=jdbc\:mysql\://127.0.0.1\:3306/students     //连接到本地students数据库

user=root     //连接数据库用户名

password=123456      //连接数据库密码

猜你喜欢

转载自blog.csdn.net/qq_40133908/article/details/82348327
今日推荐