sql增删改查(SQL增删改查编写程序)

sql增删改查(SQL增删改查编写程序)package com study util import java io IOException import java io InputStream import java lang reflect Field import java sql import java util ArrayList import java util List import java util

大家好,我是讯享网,很高兴认识大家。

package com.study.util;

import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Field; import java.sql.*; import java.util.ArrayList; import java.util.List; import java.util.Properties;

/

  • 连接,驱动连接,关闭都有,
  • 作为通用的DML处理 */ public class DBUtil { static String url="jdbc:mysql://127.1.0.1:3306/mytest?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia%2fShanghai"; static String username="root"; static String userpass=""; static String driver="com.mysql.cj.jdbc.Driver";

    static{

    //从配置文件获取以上信息 Properties properties=new Properties(); InputStream is = DBUtil.class.getClassLoader().getResourceAsStream("jdbc.properties"); try { properties.load(is);//将jdbc.properties加载到这个对象 } catch (IOException e) { e.printStackTrace(); } //获取到配置文件里的信息 url = properties.getProperty("url"); username = properties.getProperty("name"); userpass = properties.getProperty("password"); driver = properties.getProperty("driver"); //注册驱动 try { Class.forName(driver); } catch (ClassNotFoundException e) { e.printStackTrace(); } 

    讯享网

    }

    //连接方法 public static Connection getConnection(){

    讯享网Connection connection=null; if (null==connection){ try { connection= DriverManager.getConnection(url,username,userpass); } catch (SQLException throwables) { throwables.printStackTrace(); } } return connection; 

    }

    //关闭方法 public static void close(ResultSet resultSet, PreparedStatement preparedStatement,Connection connection){

    try { if (resultSet!=null) { resultSet.close(); } if (preparedStatement!=null) { preparedStatement.close(); } if (connection!=null) { connection.close(); } } catch (SQLException throwables) { throwables.printStackTrace(); } 

    }


    讯享网

    /

    • DML通用方法
    • @param sql
    • @param params,Object… params 可变长的参数
    • @return boolean */ public static boolean executeDML(String sql,Object… params){

      try {

      讯享网//获取连接 Connection connection=getConnection(); //预处理 PreparedStatement ps=connection.prepareStatement(sql); //设置参数 if (null!=params){ for (int i=0;i<params.length;i++){ ps.setObject(i+1,params[i]); } } //执行SQL int i = ps.executeUpdate(); //关闭连接 close(null,ps,connection); return i>0; 

      } catch (SQLException throwables) {

      throwables.printStackTrace(); 

      } return false; }

    /

    • 通用的DQL方法

    • @param sql 查询语句
    • @param tClass 实体类的字节码对象
    • @param params 查询语句里的占位符
    • @param <T> 实体类的泛型
    • @return 查询到的数据集合 */ public static <T> List<T> executeDQL(String sql,Class<T> tClass,Object… params){

      try {

      讯享网//1.获取连接 Connection connection=getConnection(); //2.预处理 PreparedStatement preparedStatement = connection.prepareStatement(sql); //3.设置参数 if (params!=null){ for (int i=0;i<params.length;i++){ preparedStatement.setObject(i+1,params[i]); } } //4.执行SQL得到结果集 ResultSet resultSet = preparedStatement.executeQuery(); / * 5.遍历并打印结果集 */ //用List来保存所有的表数据 List<T> list=new ArrayList<T>(); T t; //获取原数据 ResultSetMetaData metaData = resultSet.getMetaData(); //获取列的总数 int columnCount = metaData.getColumnCount(); //循环遍历结果 while(resultSet.next()){ //用t保存每一条数据 t=tClass.newInstance(); for (int i=1;i<=columnCount;i++){ //获取每列的别名 String columnLabel = metaData.getColumnLabel(i); //获取该列是所有行信息 Object object = resultSet.getObject(columnLabel); //打印该列的所有行数据 try { //根据属性的名称通过反射获取属性对象 Field declaredField = tClass.getDeclaredField(columnLabel); declaredField.setAccessible(true); declaredField.set(t,object); }catch (NoSuchFieldException e) { //代表我们当前的实体类里面没有这个属性 } } list.add(t); } //关闭连接 close(resultSet,preparedStatement,connection); //将t对象保存到list里面 return list; 

      } catch (SQLException throwables) {

      throwables.printStackTrace(); 

      } catch (IllegalAccessException e) {

      讯享网e.printStackTrace(); 

      } catch (InstantiationException e) {

      e.printStackTrace(); 

      }

      return null; }

}

小讯
上一篇 2025-05-27 09:54
下一篇 2025-05-08 21:15

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/160870.html