当前位置:网站首页 > 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.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;

}

到此这篇sql增删改查(SQL增删改查编写程序)的文章就介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 增删改查sql语句问题与解决(增、删、改、查 对应的sql语法)2025-08-10 22:54:05
  • pymysql如何安装(怎样安装pymysql)2025-08-10 22:54:05
  • mysql主键和外键的建立(mysql主键,外键)2025-08-10 22:54:05
  • mysql导入sql文件代码(在mysql中导入sql文件)2025-08-10 22:54:05
  • mysql主键重复报错1062(mysql主键重复报错)2025-08-10 22:54:05
  • mongodb数据库和mysql区别(mongodb和mysql哪个好学)2025-08-10 22:54:05
  • mysql导入sql文件乱码(mysql 运行sql文件导入到数据库 失败)2025-08-10 22:54:05
  • mysql设置主键语句(mysql设置主键和外键)2025-08-10 22:54:05
  • sql server打开sql文件(sql server打开数据库文件)2025-08-10 22:54:05
  • oracle sql 最大长度(oracle in最大长度)2025-08-10 22:54:05
  • 全屏图片