对原始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. python爬虫学习视频资料免费送,用起来非常666

    当我们浏览网页的时候,经常会看到像下面这些好看的图片,你是否想把这些图片保存下载下来. 我们最常规的做法就是通过鼠标右键,选择另存为.但有些图片点击鼠标右键的时候并没有另存为选项,或者你可以通过截图工 ...

  2. FFmpeg开发实战(三):FFmpeg 打印音视频Meta信息

    在之前使用FFmpeg命令行的时候,我们经常看到FFmpeg命令行在输出音视频文件的会打印一下文件的Meta信息,类似如图: 那么我们如何通过代码的方式输出这些Meta信息呢? FFmpeg提供了一个 ...

  3. [Swift]LeetCode63. 不同路径 II | Unique Paths II

    A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...

  4. [Swift]LeetCode279. 完全平方数 | Perfect Squares

    Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 1 ...

  5. [Swift]LeetCode704. 二分查找 | Binary Search

    Given a sorted (in ascending order) integer array nums of nelements and a target value, write a func ...

  6. openstack快速安装之packstack

    最简单的openstack安装方式之packstack 一.环境准备 我们安装的是all-in-one环境的openstack,测试机IP:192.168.1.10 [root@openstack ~ ...

  7. SQL执行错误#1064---保留字错误

    CREATE TABLE IF NOT EXISTS `change` ( `id` INT NOT NULL AUTO_INCREMENT, `creator` VARCHAR(45) NOT NU ...

  8. js闭包vs Java内部类

    前言: 昨天写了一个关于Java内部的博客,在内部类的最后一点中谈到了Java闭包的概念,他是这样定义闭包的:闭包是一个可调用的对象,它记录了一些信息,这些信息来自创建它的作用域.结合Java的内部类 ...

  9. Python内置函数(18)——enumerate

    英文文档: enumerate(iterable, start=0) Return an enumerate object. iterable must be a sequence, an itera ...

  10. 又拍云 API 使用的那些小事

    又拍云提供了丰富的 API 调用,为了减少用户在初次接入时可能会遇到的坑”,本文将对又拍云常用的 API 使用方法做个简单的梳理,力求让业务接入变得更简单,更高效. 目前我们的 API 主要有四大类, ...