关于数据库连接、释放连接、查询数据库、存入数据库的问题,估计让很多人头大了吧,下面我用一个JDBC来完成这些,之后大家直接调用方法就好。废话不多说,直接上代码:
package com.TestServer.JDBC;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public final class Jdbc {
private static String url = "jdbc:mysql://localhost/test";
private static String user = "root";
private static String password = "root";
private Jdbc() {
}
static {
try {
// 加载驱动
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 连接数据库
public static Connection getCn() {
try {
return DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
// 释放连接 关闭结果集对象 关闭预编译对象 关闭数据库连接
public static void free(ResultSet rs, Statement sm, Connection con) {
try {
if (rs != null)
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if (sm != null)
sm.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if (con != null)
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
// 查询数据库
// select
public static List readDB(String sql, Object[] params) {
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
ArrayList<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
try {
con = Jdbc.getCn();
ps = con.prepareStatement(sql);
//传入“pstmt.setString(1,var1);”值
if (params != null) {
for (int i = 0; i < params.length; i++) {
ps.setObject(i + 1, params[i]);
}
}
// 执行查询
rs = ps.executeQuery();
java.sql.ResultSetMetaData rsmd = rs.getMetaData();// 获取表结构
int count = rsmd.getColumnCount();// 从表结构里得到列数
String[] columnName = new String[count];
for (int i = 0; i < count; i++) {
// System.out.println(rsmd.getColumnName(i+1));
// System.out.println(rsmd.getColumnTypeName(i+1));
columnName[i] = rsmd.getColumnName(i + 1);
}
while (rs.next()) {
HashMap<String, Object> map = new HashMap<String, Object>();
for (int i = 0; i < count; i++) {
map.put(columnName[i], rs.getObject(i + 1));
}
list.add(map);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
Jdbc.free(rs, ps, con);
}
return list;
}
// 存入数据库
// insert,update,delete
public static int writeDB(String sql, Object[] params) {
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
int row = 0;
try {
con = Jdbc.getCn();
ps = con.prepareStatement(sql);
if (params != null) {
for (int i = 0; i < params.length; i++) {
ps.setObject(i + 1, params[i]);
}
}
row = ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
Jdbc.free(rs, ps, con);
}
return row;
}
}
拿走不谢,不明白请留言!