对原始jdbc进行封装

 package com.utils;

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties; /**
* DButil.java
* @author zl
* @version 1.0
* 功能介绍:使用jdbc对数据库操作(查询、更新(插入/修改/删除)、批量更新)
*/
public class DButil { private Connection conn = null; //jdbc的链接
private PreparedStatement ps = null; //准备sql /**
* 无参构造方法
*/
public DButil(){} /*
* @param 无
* 功能介绍:加载驱动,连接数据库。
*/
public Connection getConnection(){
//准备好jdbc文件承载的类
Properties properties = new Properties();
try {
//装载jdbc文件到承载类
properties.load(DButil.class.getResourceAsStream("jdbc.properties"));
//取承载类的属性
String driverClassName = properties.getProperty("driverClassName"); //mysql的驱动
String url = properties.getProperty("url"); //数据库的url
String username = properties.getProperty("username"); //数据库的用户名
String pwd = properties.getProperty("pwd"); //数据库当前用户的密码
Class.forName(driverClassName);
conn = DriverManager.getConnection(url,username,pwd); //获取conn链接
return conn;
} catch (Exception e) {
e.printStackTrace();
}
return null;
} /*
* @param sql,params
* 功能介绍:更新操作(修改,删除,插入)
*/
public int executeUpdate(String sql,Object[] params){ try {
ps = conn.prepareStatement(sql);
if(params.length != 0){
for(int i=0; i<params.length; i++){
ps.setObject(i+1, params[i]);
}
}
int rows = ps.executeUpdate();
return rows;
} catch (Exception e) {
e.printStackTrace();
}finally{
closeUpdate();
}
return 0;
} /*
* @param:
* 功能介绍:批量更新
*/
public void batchUpdate(String sql,List<Object[]> list){ try {
ps = conn.prepareStatement(sql);
conn.setAutoCommit(false); //关闭mysql自动提交事务
//final int batchSize = 1000; //防止内存溢出
//int count = 0; //记录插入数量
int size = list.size();
Object[] obj = null;
for (int i = 0; i < size; i++) {
obj = list.get(i);
for (int j = 0; j < obj.length; j++) {
ps.setObject(j + 1, obj[j]);
}
ps.addBatch();
/*if(++count % batchSize == 0) {
ps.executeBatch();
//conn.commit();
}*/
}
ps.executeBatch();
conn.commit();
conn.setAutoCommit(true);
} catch (SQLException e) {
e.printStackTrace();
try {
conn.rollback();
conn.setAutoCommit(true);
} catch (SQLException e1) {
e1.printStackTrace();
}
} finally {
closeUpdate(); //关闭资源
}
} /*
* @param sql,params
* 功能介绍:查询操作
*/
public List<Map<String,String>> executeQuery(String sql,Object[] params){ ResultSet rs = null;
List<Map<String,String>> list = null;
try {
ps = conn.prepareStatement(sql);
if(params != null){
for(int i=0; i<params.length; i++){
ps.setObject(i+1,params[i]);
}
}
rs = ps.executeQuery();
list = new ArrayList<Map<String,String>>();
while(rs.next()){ //移动光标,如果新的当前行有效,则返回 true;如果不存在下一行,则返回 false
ResultSetMetaData rsmd = rs.getMetaData();
Map<String,String> map = new HashMap<String, String>();
for(int i=1; i<=rsmd.getColumnCount(); i++){
map.put(rsmd.getColumnName(i),rs.getObject(i).toString());
}
list.add(map);
}
return list; } catch (Exception e) {
e.printStackTrace();
}finally{
closeQuery(rs);
}
return null;
} /*
* @param 无
* 功能介绍:关闭更新资源
*/
public void closeUpdate(){
try{
if(ps!=null){
ps.close();
} if(conn!=null){
conn.close();
}
}catch(SQLException e){
e.printStackTrace();
}
} /*
* @param rs
* 功能介绍:关闭查询资源
*/
public void closeQuery(ResultSet rs){
try {
if(rs!=null){
rs.close();
} if(ps!=null){
ps.close();
} if(conn!=null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
} /*
* @param: args
* 功能介绍:测试jdbc
*/
/*public static void main(String[] args) { DButil db = new DButil();
db.getConnection();
// String sql = "select * from cpu2006 where id=?";
// Object[] params = new Object[1];
// params[0] = 1;
// List<Map<String,String>> list = new ArrayList<Map<String,String>>();
// list = db.executeQuery(sql, params);
// System.out.println(list.toString());
String sql2 = "insert into cpu2006(hardware_vendor,cores,chips,cores_per_chip,base_copies,result,baseline,publish,sys)values(?,?,?,?,?,?,?,?,?)";
List<Object[]> inList = new ArrayList<Object[]>(); //需要新增的数据
Object[] cpu = new Object[]{"1","1","1","1","1","1","1","1","1"};
inList.add(cpu);
db.batchUpdate(sql2, inList);
}*/ }

附上

jdbc.properties
 driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/testMysql?useUnicode=true&amp;characterEncoding=utf-8
username=root
pwd=root

JDBC操作MySQL数据的更多相关文章

  1. java数据库 JDBC操作MySQL数据库常用API 部门表和员工表 创建表 添加数据 查询数据

    package com.swift.department; import java.sql.Connection; import java.sql.PreparedStatement; import ...

  2. Java使用Jdbc操作MySql数据库(一)

    这个示例是Java操作MySql的基本方法. 在这个示例之前,要安装好MySql,并且配置好账户密码,创建一个logininfo数据库,在数据库中创建userinfo数据表.并且在表中添加示例数据. ...

  3. 在spark中操作mysql数据 ---- spark学习之七

    使用spark的 DataFrame 来操作mysql数据. DataFrame是比RDD更高一个级别的抽象,可以应用SQL语句进行操作,详细参考: https://spark.apache.org/ ...

  4. jdbc操作mysql

    本文讲述2点: 一. jdbc 操作 MySQL .(封装一个JdbcUtils.java类,实现数据库表的增删改查) 1. 建立数据库连接 Class.forName(DRIVER); connec ...

  5. [自动化专题]JDBC操作mysql时遇到的拦路虎

    在挫折中成长,在错误中学习.聊聊我们在Selenium自动化中使用JDBC操作mysql数据库中遇到的那些拦路虎: 错误一:Can not issue data manipulation statem ...

  6. JDBC操作MySQL(crud)

    这两天复习了一下JDBC操作MySQL,把crud操作的例子记一下, 类库链接(mysql-connector-java-5.1.37-bin.jar):http://files.cnblogs.co ...

  7. ScalikeJDBC,操作mysql数据,API

    ScalikeJDBC,操作mysql数据,API 一.构建maven项目,添加pom.xml依赖 二.resource文件下创建application.conf文件,并配置以下内容 三.操作mysq ...

  8. jdbc操作mysql(三):利用注解封装

    案例五:利用注解封装 重复步骤 我们使用jdbc操作mysql时发现,操作不同表中数据,所写的方法基本相同:比如我们根据id向用户表添加数据,根据id删除商品表的数据,或者查询所有数据并用list集合 ...

  9. JDBC操作MySQL数据库案例

    JDBC操作MySQL数据库案例 import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepared ...

随机推荐

  1. js 格式化数字,格式化金额:

    js 格式化数字,格式化金额: function number_format(number, decimals, dec_point, thousands_sep) { /* * 参数说明: * nu ...

  2. FFmpeg开发实战(五):FFmpeg 抽取音视频的视频数据

    如何使用FFmpeg抽取音视频的视频数据,代码如下: // FFmpegTest.cpp : 此文件包含 "main" 函数.程序执行将在此处开始并结束. // #include ...

  3. Vue入门手册整理

    目录 第一章.环境搭建 第二章.目录结构 第三章.Vue调试 第四章.定义页面 附录资料 第一章.环境搭建 1.1.准备: npm: 6.9.0 (npm > 3.0) node: v10.15 ...

  4. iOS学习——浅谈RunLoop

    RunLoop的字面意思是运行循环.跑圈,一个App启动后能一直执行,就是因为启动后进入了一个循环,在这个循环中不断监听各种状态.手势动作,并做出相应的响应.这个循环就是我们今天要探究的RunLoop ...

  5. python日志syslog运用

    syslog的官方说明在: https://docs.python.org/2/library/syslog.html#module-syslog 该模块的主要方式为: #!/usr/bin/pyth ...

  6. Python合并多个Excel数据

    安装模块 1.找到对应的模块  http://www.python-excel.org/ 2.用pip install 安装 pip install xlrdpip install XlsxWrite ...

  7. [工具]PyCharm激活、注册码无效解决办法

    前言 我是个 Pythoner,开发工具一直使用的 JetBrains 的 PyCharm.我师傅告诉过我:一个程序员一定要有一个用的很 6 的 IDE,你的开发效率会提高很多,很多... 我从小白的 ...

  8. 带着萌新看springboot源码12(启动原理 下)

    先继续接上一篇,那个启动原理还有一点没说完. 6. afterRefresh(context, applicationArguments); 看这个名字就知道,应该就是ioc容器刷新之后的一些操作了, ...

  9. java.lang.OutOfMemoryError: unable to create new native thread问题排查以及当前系统最大进程数量

    1. 问题描述 线上某应用出问题,查看日志 这一组服务器是2台,每台都有.配置为64G,使用7G,空余内存非常多 2. 问题排查 环境变化:程序迁移到新机器,新机器是CentOS 7,程序运行账号由原 ...

  10. 前端笔记之HTML5&CSS3(中)选择器&伪类伪元素&CSS3效果&渐变背景&过渡

    一.CSS3选择器 CSS3是CSS的第三代版本,新增了很多功能,例如:强大的选择器.盒模型.圆角.渐变.动画.2D/3D转换.文字特效等. CSS3和HTML5没有任何关系!HTML5骨架中,可以用 ...