JDBC mysql数据库连接
话不多说,直接上代码
package com.iotck.util;import java.io.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.sql.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Properties;/*** @Author: 廾匸* @Date: 2021/02/08 14:01* @Description: 数据库连接* @version: 1.01*/
public class JdbcUtil {private static String driver;private static String url;private static String account;private static String passWord;protected static Connection connect;protected static PreparedStatement statement;protected static ResultSet resultSet;/*** 静态代码块加载配置文件信息* 配置文件在后部*/static {try {// 1.创建一个properties对象(集合)Properties properties = new Properties();// 2.通过当前类获取类加载器ClassLoader classLoader = JdbcUtil.class.getClassLoader();// 3.通过类加载器的方法获得一个输入流InputStream inputStream = ClassLoader.getResourceAsStream("jdbc");// 4.使用 properties.load()加载输入流properties.load(inputStream);/*// 以上可以写成一句如下Properties properties = new Properties();properties.load(JdbcUtil.class.getClassLoader().getResourceAsStream("jdbc"));*/// 5.获取配置文件里相关参数的值driver = properties.getProperty("driver");url = properties.getProperty("url");account = properties.getProperty("account");passWord = properties.getProperty("passWord");//加载驱动程序Class.forName(driver);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}// 获取数据库连接包装成一个获取方法private static Connection getConnect() throws SQLException {// DriverManager.connect(url,username, password)获取连接对象return DriverManager.getConnection(url,account,passWord);}// 对数据库进行增删改操作public static boolean update(String sql,Object...objects){try {// 得到连接对象connect = getConnect();// 预加载sql语句,带有占位符statement = connect.prepareStatement(sql);// 占位符赋值if(objects != null && objects.length != 0){for (int i = 0; i < objects.length; i++) {statement.setObject(i+1,objects[i]);}}// 更新操作,返回更新的行数。int i = statement.executeUpdate();if(i > 0){return true;}return false;} catch (SQLException e) {e.printStackTrace();}finally {try {// 调用关闭资源close(connect,statement);} catch (SQLException e) {e.printStackTrace();}}return false;}// 对数据库进行查询操作public static <T> List<T> query(String sql,Class<T> tClass,Object...objects){try {connect = getConnect();statement = connect.prepareStatement(sql);if(objects != null && objects.length != 0){for (int i = 0; i < objects.length; i++) {statement.setObject(i+1,objects[i]);}}// 运行查询语句,返回ReaultSet对象,一个结果集合resultSet = statement.executeQuery();ResultSetMetaData metaData = resultSet.getMetaData();List<T> list = new ArrayList<>();// 判断是否有下一行while (resultSet.next()){// 通过反射新建一个对象T t = tClass.getConstructor().newInstance();// metaData.getColumnCount()获取列的行数for (int i = 0; i < metaData.getColumnCount(); i++) {// 通过列的索引获取值Object object = resultSet.getObject(i + 1);// 获取列名String columnName = metaData.getColumnName(i + 1);// 通过列名在反射对象中获取属性Field declaredField = tClass.getDeclaredField(columnName);/* Class<?> type = declaredField.getType();if(type.getName().equals("boolean")){String o = (String)object;if(o.equals("0")){object = false;}else {object = true;}}*/// 打开赋值权限,true代表可赋值的declaredField.setAccessible(true);// 给属性赋值declaredField.set(t,object);}list.add(t);}return list;} catch (SQLException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (InstantiationException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();} catch (NoSuchFieldException e) {e.printStackTrace();} catch (NoSuchMethodException e) {e.printStackTrace();} finally {try {closeAll(connect,statement,resultSet);} catch (SQLException e) {e.printStackTrace();}}return Collections.EMPTY_LIST;}// 包装一个方法将关闭资源包装在一个类中用于调用private static void close(Connection connection,PreparedStatement statement) throws SQLException {if(statement != null){statement.close();}if(connection != null){connection.close();}}//private static void closeAll(Connection connection,PreparedStatement statement,ResultSet resultSet) throws SQLException {if(resultSet != null){statement.close();}close(connection,statement);}
}
配置文件如下:
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/数据库名?serverTimezone=Hongkong
也可以简写为url=jdbc:mysql:///数据库名?serverTimezone=Hongkong
account=用户名
passWord=用户密码
有不对或有改善建议建议提出哟!
JDBC mysql数据库连接相关推荐
- jdbc mysql分页_JDBC【数据库连接池、DbUtils框架、分页】
1.数据库连接池 什么是数据库连接池 简单来说:数据库连接池就是提供连接的... 为什么我们要使用数据库连接池 数据库的连接的建立和关闭是非常消耗资源的 频繁地打开.关闭连接造成系统性能低下 编写连接 ...
- 基于JDBC的mysql数据库连接
JDBC(Java DataBase Connection)是基于java的.用于访问关系数据库的一种应用接口.JDBC提供多种数据库驱动程序类型,提供执行SQL语句来曹忠关系数据库的方法,使得jav ...
- Mysql数据库连接———JDBC,Java代码
1.数据库部分 创建数据表customer(客户).deposite(存款).bank(银行),表结构如下: Create Table CREATE TABLE `bank` ( `b_id` c ...
- jdbc mysql select_java连接mysql数据库并使用jdbc进行查询详解
public Connection getCon() { //数据库连接名称 String username="root"; //数据库连接密码 String password=& ...
- day04 JDBC java数据库连接
day04 JDBC java数据库连接 yuxiaohu已关注 2017.12.03 16:12:19字数 139阅读 85 1 导包 mysql 提供的实现java接口的包路径 C:\Progra ...
- Tomcat 5.5 配置 MySQL 数据库连接池
用了最新的几个咚咚,搞了整整一天终于搞清楚了Tomcat 5.5 配置 MySQL 数据库连接池,网上的经验并不能完全用到新环境里面,我写出整个过程以方便大家配置. 1 环境描述 JDK 1.5 To ...
- Java -- JDBC 学习--数据库连接池
JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤: 在主程序(如servlet.beans)中建立数据库连接. 进行sql操作 断开数据库连接. 这种模式开 ...
- MySql数据库连接超时处理
博主在做web开发时遇到MySql数据库连接超时的问题. 控制台报错如下: Request processing failed; nested exception is org.springframe ...
- jdbc mysql参数_Mysql JDBC URL中的重要参数有啊些
以下的文章主要介绍的是Mysql JDBC URL中几个比较重要参数的详细说明,我们大家都知道MySQL数据库中存在JDBC URL几个比较重要参数,此文还将对其具体实例进行介绍,希望大家通过本文能得 ...
最新文章
- win10下pycharm安装opencv tensorflow anaconda
- oracle 辅助实例,初学rman问题小记三:创建辅助实例遇到的ORA-01031
- 2020年安徽赛区智能车竞赛有关事项通知(草案)
- Codeforces 164 E Compatible Numbers
- c语言中error c2109 是什么错,求c语言改错 error C2109: 下标要求数组或指针类型?...
- 父路径_Logtail 新功能:采集路径黑名单
- Android之Dialog提示Unable to add window -- token is not valid; is your activity running?
- MySQL innodb_page_size
- 汇编跳转指令B、BL、BX、BLX 和 BXJ的区别
- 有向图的强联通分量 Tarjan算法模板
- 找不到匹配的key exchange算法_AC自动机 | 多字符串匹配你会吗?
- 在eclipse上安装lomboz插件
- Docker运维笔记-Docker端口映射
- 用数据说话:北京房价数据背后的数据
- java 滚动歌词_基于JavaScript怎么实现让歌词滚动播放
- 大三下了,一点感概,仅作共勉
- (构造+二进制)2020牛客寒假算法基础集训营3B.牛牛的DRB迷宫II
- 编写一个c语言程序 杨辉三角,杨辉三角 c语言
- 小试牛刀【自己翻译】
- 【JS基础】立即执行函数表达式(自执行函数)
热门文章
- 第十八天2019.8.22
- 苹果发布新的 Swift Server 框架:Swift Cluster Membership,这次的目标是集群
- 阿里云服务器1核1G1M宽带可以支持多少IP访问量?
- 中考大数据大连79_中考大数据 | 大连各初中2017中考成绩统计④(格致和79中)附:中考加分降分政策...
- 直播app源码,Java的输入输出
- 初识Java 超详细的万字入门介绍
- tomcat假死排查-数据连接池耗尽
- Android的onDestroy方法,Android:onDestroy()或Application类中的类似方法
- Linux新手:win10内置Linux一键安装
- 详细说说hook Api技术