由于mysql版本问题, 8.0的配置文件变了

配置文件

driverClassName = com.mysql.cj.jdbc.Driver

url = jdbc:mysql://localhost:3306/studentmanage?\

characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true

username = root

password = 123456

Sqlhelper

package edu.rjxy.xjdx.emps.common.utils;

import java.io.IOException;

import java.io.InputStream;

import java.lang.reflect.Method;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.ArrayList;

import java.util.Collections;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.Properties;

import java.sql.*;

public class SqlHelper {

private static Connection conn = null;

private static PreparedStatement ps = null;

private static ResultSet rs = null;

//连接数据库的参数

private static String url = null;

private static String userName =null;

private static String driver =null;

private static String passwd =null;

private static CallableStatement cs = null;

private static Properties pp = null;

private static InputStream fis = null;

public static CallableStatement getCs() {

return cs;

}

public static Connection getCt() {

return conn;

}

public static PreparedStatement getPs() {

return ps;

}

public static ResultSet getRs() {

return rs;

}

static {

try {

pp = new Properties();

fis = SqlHelper.class.getClassLoader().getResourceAsStream("dbinfo.properties");//配置文件

pp.load(fis);

url = pp.getProperty("url");

driver = pp.getProperty("driverClassName");

userName = pp.getProperty("username");

passwd = pp.getProperty("password");

Class.forName(driver);

}

catch (Exception e) {

e.printStackTrace();

}

finally {

try {

fis.close();

}

catch(IOException e) {e.printStackTrace();}

fis = null;//垃圾回收站上收拾

}

}

public static Connection getConnection() {

try {

conn = DriverManager.getConnection(url, userName,passwd);

}

catch(Exception e) {e.printStackTrace();}

return conn;

}

//*************callPro1存储过程函数1*************

public static CallableStatement callPro1(String sql, String[] parameters) {

try {

conn = getConnection();

cs = conn.prepareCall(sql);

if(parameters!=null) {

for(int i = 0; i < parameters.length; ++i) {

cs.setObject(i + 1, parameters[i]);

}

}

cs.execute();

}

catch(Exception e) {

e.printStackTrace(); throw new RuntimeException(e.getMessage());

} finally {

close(rs,cs, conn);

}

return cs;

}

//*******************callpro2存储过程2************************

public static CallableStatement callPro2(String sql, String[] inparameters, Integer[] outparameters) {

try {

conn = getConnection();

cs = conn.prepareCall(sql);

if(inparameters != null) {

for(int i = 0; i < inparameters.length; ++i) {

cs.setObject(i+1,inparameters[i]);

}

}

//cs.registerOutparameter(2,oracle.jdbc.OracleTypes.CURSOR);

if(outparameters != null) {

for(int i = 0; i < outparameters.length; ++i) {

cs.registerOutParameter(inparameters.length+1+i,outparameters[i]);

}

}

cs.execute();

}

catch(Exception e) {

e.printStackTrace(); throw new RuntimeException(e.getMessage());

}

finally {

}

return cs;

}

public static ArrayList executeQuery(Class type, String sql, String[] parameters) {

ArrayList list = null;

try {

conn = getConnection();

ps = conn.prepareStatement(sql);

if(parameters!=null) {

for(int i = 0; i < parameters.length; ++i) {

ps.setString(i+1,parameters[i]);

}

}

rs = ps.executeQuery();

//得到结果集(rs)的结构

ResultSetMetaData rsmd = rs.getMetaData();

list = new ArrayList();

//通过rsmd可以得到该结果集有多少列

int columnNum = rsmd.getColumnCount();

//获取字段名

String[] clounmNames = new String[columnNum];

for (int i = 0; i < columnNum; i++) {

clounmNames[i] = rsmd.getColumnLabel(i+1);

}

Method[] methods = type.getDeclaredMethods();

//从rs中取出数据,并且封装到ArrayList中

while (rs.next()) {

Object obj = type.getDeclaredConstructor().newInstance();

for (int i = 0; i < columnNum; i++) {

String clounmName = clounmNames[i];

Object clounmValue = rs.getObject(i + 1);

String setterName = "set"+clounmName.substring(0,1).toUpperCase()+clounmName.substring(1);// setName

Method setter = null;

for (int j = 0; j < methods.length; j++) {

if (methods[j].getName().equals(setterName)){

setter = methods[j];

break;

}

}

if(setter!=null ){

// System.out.println(""+setter + ":"+clounmValue.getClass().getName() );

if(setter.getParameterTypes()[0].getName().equals("boolean") || setter.getParameterTypes()[0].getName().equals("java.lang.Boolean")){

clounmValue = ((Integer)clounmValue==0)?false:true;

}

boolean isBasic = false;

String parameter0Name = setter.getParameterTypes()[0].getName();

String[] allBasic =new String[]{"byte","short","int","long","float","double","char","boolean"};

for (String each:

allBasic ) {

if(parameter0Name.equals(each)){

isBasic= true;

break;

}

}

if( !( clounmValue==null && isBasic ) ){

setter.invoke(obj,clounmValue);

}

}

//获取字段值

}

list.add((T)obj);

}

return list;

}

catch(Exception e) {

e.printStackTrace();

throw new RuntimeException(e.getMessage());

} finally {

close(rs, ps, conn);

}

}

public static int queryCount(String sql, String[] parameters) {

ArrayList list = null;

try {

conn = getConnection();

ps = conn.prepareStatement(sql);

if(parameters!=null) {

for(int i = 0; i < parameters.length; ++i) {

ps.setString(i+1,parameters[i]);

}

}

rs = ps.executeQuery();

if (!rs.next()) return 0;

return Integer.parseInt(rs.getObject(1).toString());

}

catch(Exception e) {

e.printStackTrace();

throw new RuntimeException(e.getMessage());

} finally {

close(rs, ps, conn);

}

}

public static ArrayList executeQuery(String sql, String[] parameters) {

ArrayList list = null;

try {

conn = getConnection();

ps = conn.prepareStatement(sql);

if(parameters!=null) {

for(int i = 0; i < parameters.length; ++i) {

ps.setString(i+1,parameters[i]);

}

}

rs = ps.executeQuery();

//得到结果集(rs)的结构

ResultSetMetaData rsmd = rs.getMetaData();

list = new ArrayList();

//通过rsmd可以得到该结果集有多少列

int columnNum = rsmd.getColumnCount();

//从rs中取出数据,并且封装到ArrayList中

while (rs.next()) {

Object []objects = new Object[columnNum];

for(int i = 0; i < objects.length; ++i) {

objects[i] = rs.getObject(i + 1);

}

list.add(objects);

}

return list;

}

catch(Exception e) {

e.printStackTrace();

throw new RuntimeException(e.getMessage());

} finally {

close(rs, ps, conn);

}

}

public static void executeUpdate2(String[] sql,String[][] parameters) {

try {

conn = getConnection();

conn.setAutoCommit(false);

for(int i = 0; i < sql.length; ++i) {

if(null != parameters[i]) {

ps = conn.prepareStatement(sql[i]);

for(int j = 0; j < parameters[i].length; ++j) {

ps.setString(j + 1, parameters[i][j]);

}

ps.executeUpdate();

}

}

conn.commit();

} catch (Exception e) {

e.printStackTrace();

try {

conn.rollback();

} catch (SQLException e1) {

e1.printStackTrace();

}

throw new RuntimeException(e.getMessage());

} finally {

close(rs,ps, conn);

}

}

//先写一个update、delete、insert

//sql格式:update 表名 set 字段名 =?where 字段=?

//parameter神应该是(”abc“,23)

public static void executeUpdate(String sql,String[] parameters) {

try {

conn =getConnection();

ps = conn.prepareStatement(sql);

if(parameters!=null) {

for(int i=0;i

ps.setString(i+1,parameters[i]);

}

}

ps.executeUpdate();

} catch(Exception e) {

e.printStackTrace();//开发阶段

//抛出异常

//可以处理,也可以不处理

throw new RuntimeException(e.getMessage());

} finally {

close(rs,ps, conn);

}

}

public static void close(ResultSet rs,Statement ps,Connection ct)

{

//关闭资源(先开后关)

if(rs!=null) {

try {

rs.close();

} catch(SQLException e) {

e.printStackTrace();

}

rs=null;

}

if(ps!=null) {

try {

ps.close();

} catch(SQLException e) {

e.printStackTrace();

}

ps=null;

}

if(null!=ct) {

try {

ct.close();

} catch(SQLException e) {

e.printStackTrace();

}

ct=null;

}

}

public static List resultSetToList(ResultSet rs) throws java.sql.SQLException {

if (rs == null) return Collections.emptyList();

ResultSet md = (ResultSet) rs.getMetaData(); //得到结果集(rs)的结构信息,比如字段数、字段名等

int columnCount = ((ResultSetMetaData) md).getColumnCount(); //返回此 ResultSet 对象中的列数

List list = new ArrayList();

Map rowData = new HashMap();

while (rs.next()) {

rowData = new HashMap(columnCount);

for (int i = 1; i <= columnCount; i++) {

rowData.put(((ResultSetMetaData) md).getColumnName(i), rs.getObject(i));

}

list.add(rowData);

}

return list;

}

}

MySQL助手_java 8.0Mysql 助手类相关推荐

  1. 搜索的php mysql代码生成器_PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)...

    根据 Mysql 里的字段 自动生成 类文件: 但需要导入: require_once ./db/ez_sql_core.php; require_once ./db/ez_sql_mysql.php ...

  2. 玻璃心?App Store下架PP助手与360手机助手,做aso会被苹果下架吗

    柚鸥ASO 在别人的场子混,码头得拜,高香得烧,可即便如此,毕竟是人在屋檐下,纵然低了头,弯了腰,也免不了东家将你扫地出门,为哪般?业务有冲突嘛,在利益面前,哪怕租客背景强大,也照下架不误,谁叫你抢我 ...

  3. 同时支持三个mysql+sqlite+pdo的php数据库类_同时支持三个MySQL+SQLite+PDO的PHP数据库类...

    PHP学习教程文章简介: 同时支持三个MySQL+SQLite+PDO的PHP数据库类使用方法: // mysql connect $db = new SQL(mysql:host=localhost ...

  4. 2场直播丨MySQL 数据库最常见的 6 类故障的排除方法、2020数据技术嘉年华·金融峰会暨数据库大咖讲坛(第4期)...

    一.MySQL 数据库最常见的 6 类故障的排除方法 - 2020年11月12日 20:00 - 2020年11月12日 21:00 MySQL 无法启动?MySQL 连接不上?MySQL 挂起(hu ...

  5. 自定义tt文本模板实现MySql指数据库中生成实体类

    自定义tt文本模板实现MySql指数据库中生成实体类 1.在项目中依次点击"添加"/"新建项",选择"文本模板",输入名称后点击添加. 2. ...

  6. 什么是政微助手?政微助手是干什么用的?

    什么是政微助手?政微助手是一个通过依托微信生态,利用低代码,微服务的形式,为国内三四线基层政务部门打造的一个移动端减负增效工具,该工具通过打通个人微信.企业微信.微信小程序三端的数据壁垒,通过高效的S ...

  7. 软件:股票小助手/盯盘小助手!

    软件:股票小助手/盯盘小助手 功能: 1.隐蔽,能和常用工作软件融为一体,即使被领导同事看见屏幕,也察觉不了: 2.能实时更新数据,不能有更新频率限制: 3.能设置目标上限,下限价,达到目标后已隐蔽的 ...

  8. 爱思助手 for Mac(苹果手机助手)中文版

    爱思助手 for Mac是一款非常实用的苹果手机助手,爱思助手mac版提供了备份恢复.一键刷机.一键越狱.验机.安装应用等实用的功能, 非常全面,爱思助手苹果电脑版可以轻松帮你管理你的iPhone手机 ...

  9. 专为mac用户设计的苹果手机助手。爱思助手 Mac版结构更清晰,功能更好用,界面更清晰,让你能够轻松查看设备信息,下载最新最火的应用游戏。

    爱思助手 for Mac(苹果手机助手) 这是专为mac用户设计的苹果手机助手.爱思助手 Mac版结构更清晰,功能更好用,界面更清晰,让你能够轻松查看设备信息,下载最新最火的应用游戏,还能下载酷炫的手 ...

最新文章

  1. 二叉树的遍历:先序 中序 后序遍历的递归与非递归实现及层序遍历
  2. 好的飞鸽传书2007对于对外的API
  3. 人脸生成:Beyond Face Rotation: Global and Local Perception GAN
  4. matlab 中 diff 函数 cumsum 函数 logical 函数 tabulate 函数 使用方法
  5. JWT的Java使用 (JJWT)
  6. 【算法设计与分析】如何分析一个算法
  7. 项目经理面试必备20题
  8. c语言三重积分程序求法,D9_3三重积分[同济大学高等数学]..docx
  9. 圆角半角数据库_SQL SERVER 全角和半角的解决方法
  10. Pr入门系列之十三:抠像与合成
  11. 北大清华联手开设通用人工智能实验班,「顶级AI科学家」朱松纯领衔
  12. MSP430单片机工程配置driverlib库
  13. 第一章 基本数据类型-API的理解和使用
  14. ID号自动生成,补缺功能
  15. 【OCM】Oracle 10g OCA-OCP-OCM 证书体系展示,纪念2012
  16. Win10工具推荐:自带的剪切板
  17. 苹果seo_SEO文章关键词如何优化?
  18. 数字经济赋能乡村建设,助力乡村全面振兴
  19. python实现模拟按键down_Python模拟keydown
  20. 《劳动经济学》考试重点(00164)

热门文章

  1. Netty之Bootstrap详解
  2. 如何自定义一个starter组件
  3. Spring为啥默认把bean设计成单例的
  4. pandas切片操作
  5. sklearn 随机森林
  6. 在不动用sp_configure的情况下,如何 =》去掉列的自增长,并保留原数据
  7. ElasticSearch配置详解
  8. Hibernate 原汁原味的四种抓取策略(转)
  9. mybatis 插入数据时返回主键
  10. flex中datagrid中的过滤功能