借鉴原CSDN作者yanzi1225627的一篇:http://blog.csdn.net/yanzi1225627/article/details/26950615

作者东西写的很好,自己用的时候进行了一点修改,修改的地方是参数文件和关闭连接函数.修改部分会用红色标记

JdbcUtils.java

修改后代码如下:

/**
* Created by Administrator on 2017-12-08.
*/
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Field;
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.*; public class JdbcUtils { //数据库用户名
private static String USERNAME;
//数据库密码
private static String PASSWORD;
//驱动信息
private static String DRIVER;
//数据库地址
private static String URL;
private Connection connection;
private PreparedStatement pstmt;
private ResultSet resultSet; //无参数构造函数,参数由配置文件中出
public JdbcUtils() {
     //使用参数文件方式进行对数据库连接的判断,config.properties文件在JdbcUtil.java文件的同目录下,比如我的java文件在src文件夹里,config.properties也在src文件夹中
InputStream inputStream = getClass().getResourceAsStream("config.properties");
Properties p = new Properties();
try {
p.load(inputStream);
} catch (IOException e1) {
e1.printStackTrace();
}
DRIVER = p.getProperty("DRIVER");
URL = p.getProperty("URL");
USERNAME = p.getProperty("USERNAME");
PASSWORD = p.getProperty("PASSWORD");
// System.out.println("Url:"+p.getProperty("URL")+",USERNAME:"+p.getProperty("USERNAME")+",PASSWORD:"+p.getProperty("PASSWORD"));
try{
Class.forName(DRIVER);
System.out.println("数据库连接成功!");
}catch(Exception e){ }
} /**
* 获得数据库的连接
* @return
*/
public Connection getConnection(){
try {
connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return connection;
} /**
* 增加、删除、改
* @param sql
* @param params
* @return
* @throws SQLException
*/
public boolean updateByPreparedStatement(String sql, List<Object>params)throws SQLException{
boolean flag = false;
int result = -1;
pstmt = connection.prepareStatement(sql);
int index = 1;
if(params != null && !params.isEmpty()){
for(int i=0; i<params.size(); i++){
pstmt.setObject(index++, params.get(i));
}
}
result = pstmt.executeUpdate();
flag = result > 0 ? true : false;
return flag;
} /**
* 查询单条记录
* @param sql
* @param params
* @return
* @throws SQLException
*/
public Map<String, Object> findSimpleResult(String sql, List<Object> params) throws SQLException{
Map<String, Object> map = new HashMap<String, Object>();
int index = 1;
pstmt = connection.prepareStatement(sql);
if(params != null && !params.isEmpty()){
for(int i=0; i<params.size(); i++){
pstmt.setObject(index++, params.get(i));
}
}
resultSet = pstmt.executeQuery();//返回查询结果
ResultSetMetaData metaData = resultSet.getMetaData();
int col_len = metaData.getColumnCount();
while(resultSet.next()){
for(int i=0; i<col_len; i++ ){
String cols_name = metaData.getColumnName(i+1);
Object cols_value = resultSet.getObject(cols_name);
if(cols_value == null){
cols_value = "";
}
map.put(cols_name, cols_value);
}
}
return map;
} /**查询多条记录
* @param sql
* @param params
* @return
* @throws SQLException
*/
public List<Map<String, Object>> findModeResult(String sql, List<Object> params) throws SQLException{
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
int index = 1;
pstmt = connection.prepareStatement(sql);
if(params != null && !params.isEmpty()){
for(int i = 0; i<params.size(); i++){
pstmt.setObject(index++, params.get(i));
}
}
resultSet = pstmt.executeQuery();
ResultSetMetaData metaData = resultSet.getMetaData();
int cols_len = metaData.getColumnCount();
while(resultSet.next()){
Map<String, Object> map = new HashMap<String, Object>();
for(int i=0; i<cols_len; i++){
String cols_name = metaData.getColumnName(i+1);
Object cols_value = resultSet.getObject(cols_name);
if(cols_value == null){
cols_value = "";
}
map.put(cols_name, cols_value);
}
list.add(map);
} return list;
} /**通过反射机制查询单条记录
* @param sql
* @param params
* @param cls
* @return
* @throws Exception
*/
public <T> T findSimpleRefResult(String sql, List<Object> params,
Class<T> cls )throws Exception{
T resultObject = null;
int index = 1;
pstmt = connection.prepareStatement(sql);
if(params != null && !params.isEmpty()){
for(int i = 0; i<params.size(); i++){
pstmt.setObject(index++, params.get(i));
}
}
resultSet = pstmt.executeQuery();
ResultSetMetaData metaData = resultSet.getMetaData();
int cols_len = metaData.getColumnCount();
while(resultSet.next()){
//通过反射机制创建一个实例
resultObject = cls.newInstance();
for(int i = 0; i<cols_len; i++){
String cols_name = metaData.getColumnName(i+1);
Object cols_value = resultSet.getObject(cols_name);
if(cols_value == null){
cols_value = "";
}
Field field = cls.getDeclaredField(cols_name);
field.setAccessible(true); //打开javabean的访问权限
field.set(resultObject, cols_value);
}
}
return resultObject; } /**通过反射机制查询多条记录
* @param sql
* @param params
* @param cls
* @return
* @throws Exception
*/
public <T> List<T> findMoreRefResult(String sql, List<Object> params,
Class<T> cls )throws Exception {
List<T> list = new ArrayList<T>();
int index = 1;
pstmt = connection.prepareStatement(sql);
if(params != null && !params.isEmpty()){
for(int i = 0; i<params.size(); i++){
pstmt.setObject(index++, params.get(i));
}
}
resultSet = pstmt.executeQuery();
ResultSetMetaData metaData = resultSet.getMetaData();
int cols_len = metaData.getColumnCount();
while(resultSet.next()){
//通过反射机制创建一个实例
T resultObject = cls.newInstance();
for(int i = 0; i<cols_len; i++){
String cols_name = metaData.getColumnName(i+1);
Object cols_value = resultSet.getObject(cols_name);
if(cols_value == null){
cols_value = "";
}
Field field = cls.getDeclaredField(cols_name);
field.setAccessible(true); //打开javabean的访问权限
field.set(resultObject, cols_value);
}
list.add(resultObject);
}
return list;
} /**
* 释放数据库连接
*/
public void releaseConn(){
if(resultSet != null){
try{
resultSet.close();
}catch(SQLException e){
e.printStackTrace();
}
}
} /**
* 关闭所有资源,原代码中的releaseConn中关闭了结果集对象,对prepareStatement和connection没有释放。
*/
private void closeAll() {
// 关闭结果集对象
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
System.out.println(e.getMessage());
}
} // 关闭PreparedStatement对象
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {
System.out.println(e.getMessage());
}
} // 关闭Connection 对象
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
} /**
* @param args
*/
public static void main(String[] args) throws SQLException {
// TODO Auto-generated method stub
JdbcUtils jdbcUtils = new JdbcUtils();
jdbcUtils.getConnection();
jdbcUtils.closeAll(); /*******************增*********************/
/* String sql = "insert into userinfo (username, pswd) values (?, ?), (?, ?), (?, ?)";
List<Object> params = new ArrayList<Object>();
params.add("小明");
params.add("123xiaoming");
params.add("张三");
params.add("zhangsan");
params.add("李四");
params.add("lisi000");
try {
boolean flag = jdbcUtils.updateByPreparedStatement(sql, params);
System.out.println(flag);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/ /*******************删*********************/
//删除名字为张三的记录
/* String sql = "delete from userinfo where username = ?";
List<Object> params = new ArrayList<Object>();
params.add("小明");
boolean flag = jdbcUtils.updateByPreparedStatement(sql, params);*/ /*******************改*********************/
//将名字为李四的密码改了
/* String sql = "update userinfo set pswd = ? where username = ? ";
List<Object> params = new ArrayList<Object>();
params.add("lisi88888");
params.add("李四");
boolean flag = jdbcUtils.updateByPreparedStatement(sql, params);
System.out.println(flag);*/ /*******************查*********************/
//不利用反射查询多个记录
/* String sql2 = "select * from userinfo ";
List<Map<String, Object>> list = jdbcUtils.findModeResult(sql2, null);
System.out.println(list);*/
} }

  

config.properties文件如下,修改成自己想要连接的库参数就可以了。

DRIVER = com.mysql.jdbc.Driver
URL = jdbc:mysql://localhost:3307/test
USERNAME = Main
PASSWORD = qwertasdfg

  

有不懂或写错的地方请联系我。q1163949417

最新文章

  1. 一文搞懂HMM(隐马尔可夫模型)
  2. 解决浏览器Adobe Flash Player不是最新版本问题
  3. ListView
  4. java.sql.SQLException: No suitable driver 问题解决
  5. Flex小结
  6. python基础入门
  7. Java中swap解惑
  8. 8.19! 今天我有18生日,点击阅读或顶部 尾随幸运的一天!生日知识!↓——【Badboy】
  9. SpringMVC通过实体类返回json格式的字符串,并在前端显示
  10. DOM操作表格——HTML DOM
  11. 来,了解一下Java内存模型(JMM)
  12. day60 pymysql
  13. Go语言常量
  14. 企业项目开发--cookie(3)
  15. DELPHI - How to use opendialog1 for choosing a folder? TOpenDialog, TFileOpenDialog
  16. handsontable-cell type
  17. iOS View 外层奇怪的黑线
  18. 20155330 2016-2017-2 《Java程序设计》第四周学习总结
  19. RFID UHF(EPC)标签使用常识
  20. C++ 类中的const关键字

热门文章

  1. 动态加载与插件系统的初步实现(四):解析JSON、扩展Fiddler
  2. Eclipse web项目更改项目名称
  3. RHEL7 利用单个物理网卡实现VLAN
  4. 【视频编解码&#183;学习笔记】12. 图像参数集(PPS)介绍
  5. ResNet——Deep Residual Learning for Image Recognition
  6. python json模块使用详情
  7. PHP Filter 函数 日常可用
  8. Thunder——Final发布
  9. jdbc连接获取表名称
  10. C# winForm调用WebService