手写JDBC - 数据库、驱动信息存储在配置文件
1. 将数据库、驱动信息存储在配置文件
configure.properties
url=jdbc:mysql://localhost:3306/数据库名?serverTimezone=GMT&useSSL=false
user=用户名,一般是root
password=数据库密码
driver=com.mysql.cj.jdbc.Driver
2. JDBC工具类
MyDBUtil.java
import java.io.InputStream;
import java.sql.*;
import java.util.Properties; /**
* 手写实现JDBC工具类
* @author Nemo
* @version 1.0
* @date 2019/4/10
*/
public class MyDBUtil {
private static String url;
private static Properties proterties; // 注册驱动
static {
proterties = new Properties; InputStream configureStream = MyDBUtil.class.getClassLoader.getResourceAsStream("configure.proterties");
try {
properties.load(configureStream);
String driver = properties.getProperty("driver");
class.forName(driver); url = properties.getProperty("url");
} catch (Exception e) {
e.printStackTrace();
}
} // 获取连接
public static Connection getConnection() throw SQLException{
return DriverManager.getConnection(url, properties);
} // 释放资源
public static void release(Statement statement, Connection connection, ResultSet resultSet) {
closeQuietly(statement);
closeQuietly(connection);
closeQuietly(resultSet);
}
// 重载释放资源
public static void release(Statement statement, Connection connection) {
closeQuietly(statement);
closeQuietly(connection);
} private static void closeQuietly(AutoCloseable closeable) {
if (closeable != null) {
try {
closeable.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
3. 以实现数据库事务为例,演示工具类的使用
TranctionTest.java
import org.junit.Test; import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Savepoint;
import java.sql.Statement; /**
* 以数据库事务为例进行演示
* @author Nemo
* @version 1.0
* @date 2019/4/13
*/
public class TranctionTest {
@Test
public void traction() throws SQLException {
Connection conn = null;
Statement stm = null;
Savepoint savepoint = null;
try {
// 获取数据库连接
conn = MyDBUtil.getConnection(); // 关闭数据库自动commit功能
conn.setAutoCommit(false); // 建立sql语句
stm = conn.cteateStatement(); // zs给lisi转账100
String sql1 = "update user set money=money-100 where name='zs';";
String sql2 = "update user set money=money+100 where name='lisi';"; // wangwu给lisi转账100
String sql3 = "update user set money=money-100 where name='wangwu';";
String sql4 = "update user set money=money+100 where name='lisi';"; // 提交sql语句
stm.executeUpdate(sql1);
stm.executeUpdate(sql2); // 设置savepoint
savepoint = conn.setSavepoint(); int i = 1/0; stm.executeUpdate(sql3);
stm.executeUpdate(sql4); conn.commit();
} catch (Exception e) {
conn.rollback(savepoint);
conn.commit();
} finally {
MyDBUtil.release(statement, connection);
}
}
}
手写JDBC - 数据库、驱动信息存储在配置文件的更多相关文章
- MNIST手写数字数据库
手写数字库很容易建立,但是总会很浪费时间.Google实验室的Corinna Cortes和纽约大学柯朗研究所的Yann LeCun建有一个手写数字数据库,训练库有60,000张手写数字图像,测试库有 ...
- SQL纯手写创建数据库到表内内容
建表啥的只点点鼠标,太外行了,不如来看看我的纯手写,让表从无到有一系列:还有存储过程临时表,不间断的重排序: 一:建数据库 create Database Show on primary ( name ...
- 常用JDBC数据库驱动包和类名
MySQL数据库: 1)驱动包:https://mvnrepository.com/artifact/mysql/mysql-connector-java(下载路径) 2)驱动类名:com.mysql ...
- 【机器学习】BP神经网络实现手写数字识别
最近用python写了一个实现手写数字识别的BP神经网络,BP的推导到处都是,但是一动手才知道,会理论推导跟实现它是两回事.关于BP神经网络的实现网上有一些代码,可惜或多或少都有各种问题,在下手写了一 ...
- 利用神经网络算法的C#手写数字识别
欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 下载Demo - 2.77 MB (原始地址):handwritten_character_recognition.zip 下载源码 - 70. ...
- 深度学习之PyTorch实战(3)——实战手写数字识别
上一节,我们已经学会了基于PyTorch深度学习框架高效,快捷的搭建一个神经网络,并对模型进行训练和对参数进行优化的方法,接下来让我们牛刀小试,基于PyTorch框架使用神经网络来解决一个关于手写数字 ...
- 用python实现的的手写数字识别器
概述 带GUI界面的,基于python sklearn knn算法的手写数字识别器,可用于识别手写数字,训练数据集为mnist. 详细 代码下载:http://www.demodashi.com/de ...
- BP神经网络(手写数字识别)
1实验环境 实验环境:CPU i7-3770@3.40GHz,内存8G,windows10 64位操作系统 实现语言:python 实验数据:Mnist数据集 程序使用的数据库是mnist手写数字数据 ...
- Caffe系列4——基于Caffe的MNIST数据集训练与测试(手把手教你使用Lenet识别手写字体)
基于Caffe的MNIST数据集训练与测试 原创:转载请注明https://www.cnblogs.com/xiaoboge/p/10688926.html 摘要 在前面的博文中,我详细介绍了Caf ...
随机推荐
- NBA常识 位置的划分 足球:越位等于抢跑
篮球:1号位——组织后卫(控球,组织)2号位——得分后卫(中远投篮,突破)3号位-----小前锋(突破,中远投篮)4号位——大前锋(二中锋,篮板,背身单打,禁区防守)5号位——中锋(篮板.背身单打,禁 ...
- xfce4快捷键设置
xfce4的"Keyboard"可以方便的设置启动应用程序的快捷键. 例如,添加xfce4-terminal和emacs的启动快捷键 Alt+F3打开"Applicati ...
- mysql建外键失败
1. 修改引擎:(设计表-->选项-->引擎:InnoDB) 2. 检查外键类型是否一致:
- Git SSH Key
一.设置Git的user name和email: $ git config --global user.name "hhl_vip" $ git config --global ...
- 使用 FireMonkey 构建优秀专业 Android 应用的10点提示
原文链接:http://www.firemonkeyx.com/ten-tips-for-building-stunning-professional-android-apps-with-firemo ...
- java-04流程控制语句
这里先简单介绍几种流程控制语句 包括if/if-else.switch语句 1.三大流程控制结构 所谓流程控制,就是说要控制程序的执行方式,根据不同的情况执行不同的代码,从而得到不同情况下的不同结果. ...
- 相当郁闷的问题,TabHost选项卡标签图标始终不出现?
在学习Android TabHost布局过程中,很多教程告诉我,这样来显示选项卡标签的图标和文字: TapSpec spec1 = tabHost.newTabSpec("tab 1&quo ...
- Jenkins Pipeline+Maven+Gitlab持续集成构建问题集锦
问题 1.全局配置一定要写正确,之前where git 给的地址时E:\Git\cmd\git.exe一直报错,其实Windows真正的git.exe在bin目录下 如果是Linux中,使用where ...
- robot自动化分层设计
robot framework框架分层设计
- 使用Razor视图引擎来生成邮件内容
邮件的内容其实是就HTML,传统的做法都是通过在程序中拼接字符串来生成邮件的内容,生成困难,维护也困难.Razor是MVC里面使用的视图引擎,用来生成HTML非常方便,ZKEACMS中就是使用了Raz ...