因为刚开始学,但是时间比较紧,故想问问有没有人给出一个详细的做法,谢谢
这种事情,百度一下你就知道了
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import javax.servlet.jsp.jstl.sql.Result;
import javax.servlet.jsp.jstl.sql.ResultSupport;
/**
ClassName: DBHelper
Description: 数据库连接
Author: MylesZelic@outlook.com
Date: 2015年12月29日
*/
public class DBHelper {
private final static String DRIVER = "com.mysql.jdbc.Driver";
private final static String URL = "jdbc:mysql://localhost:3306/mscpdb";
private final static String USER = "root";
private final static String PASSWORD = "abc123";
private Connection conn = null;
private PreparedStatement pst = null;
private ResultSet rst = null;
private Result result = null;
/**
/**
@throws SQLException
*/
public int executeUpdate(String sql, Object... objs) throws SQLException {
int status = -1;
conn = this.getConnection();
pst = conn.prepareStatement(sql);
if (objs != null) {// 判断参数是否为空
if (objs.length > 0) {// 判断参数个数是否大于0
int idx = 1;
for (Object obj : objs) {// 循环遍历每一个参数
pst.setObject(idx, obj);// 为参数占位符赋值
idx++;
}
}
}
status = pst.executeUpdate();// 执行语句
return status;// 返回执行结果以后受影响的行数
}
/**
@throws SQLException
*/
public Result getResult(String sql, Object... objs) throws SQLException {
conn = this.getConnection();
pst = conn.prepareStatement(sql);
if (objs != null) {// 判断参数是否为空
if (objs.length > 0) {// 判断参数个数是否大于0
int idx = 1;
for (Object obj : objs) {// 循环遍历每一个参数
pst.setObject(idx, obj);// 为参数占位符赋值
idx++;
}
}
}
this.rst = pst.executeQuery();
// 通过ResultSupport对象的toResult方法获取result对象
this.result = ResultSupport.toResult(rst);
return this.result;
}
/**
@return
*/
public int transaction(List sqlList, List objsList) {
int status = -1;
try {
conn = this.getConnection();
conn.setAutoCommit(false);// 取消自动提交功能
if (sqlList != null) {
if (sqlList.size() > 0) {
for (int i = 0; i < sqlList.size(); i++) {
String sql = sqlList.get(i);
Object[] objs = objsList.get(i);
pst = conn.prepareStatement(sql);
if (objs != null) {
if (objs.length > 0) {
int idx = 1;
for (Object obj : objs) {// 循环遍历每一个参数
pst.setObject(idx, obj);// 为参数占位符赋值
idx++;
}
}
}
pst.execute();
}
}
}
status = 1;
conn.commit();// 提交事务
} catch (SQLException e) {
// 发生错误,回滚事务
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
} finally {
try {
if (pst != null) {
pst.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return status;
}
/**
初学,在这里问这个问题是问不出来什么名堂的,自己下载视频去看看就有了。百度到的可能理解有难度,还是最好找视频,有讲解理解一下
这一大堆啥玩意啊,连个停顿都没有
我的github上有关于连接所有数据库的一个工具类(包括Oracle,MySQL,SQL server) 名字是huangyidong999 。
例子:
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 com.mysql.jdbc.Connection;
public class JDBCOperation {
private static Connection conn = null;
public JDBCOperation(String jdbc) throws ClassNotFoundException, SQLException {
initConn(jdbc);
}
private void initConn(String jdbc) throws ClassNotFoundException, SQLException {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/test";
String username = "root";
String password = "root";
Class.forName(driver); // classLoader,加载对应驱动
conn = (Connection) DriverManager.getConnection(url, username, password);
}
public List<Map<String, Object>> queryMapList(String sql){
java.sql.Statement stmt = null;
ResultSet rs = null;
try {
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
ResultSetMetaData data = rs.getMetaData();
List<Map<String, Object>> al = new ArrayList<Map<String, Object>>();
while (rs.next()) {
HashMap<String, Object> map = new HashMap<String, Object>();
for (int i = 1; i <= data.getColumnCount(); i++) {// 数据库里从 1 开始
String c = data.getColumnName(i);
Object v = rs.getObject(i);
map.put(c, v);
}
al.add(map);
}
return al;
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
/*if(conn!=null&&!conn.isClosed()){
conn.close();
}*/
if(rs!=null&&!rs.isClosed()){
rs.close();
}
if(stmt!=null&&!stmt.isClosed()){
stmt.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return null;
}
public int execute(String sql){
int count = 0;
PreparedStatement pstmt=null;
try {
pstmt = (PreparedStatement) conn.prepareStatement(sql);
count = pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
/*if(conn!=null&&!conn.isClosed()){
conn.close();
}*/
if(pstmt!=null&&!pstmt.isClosed()){
pstmt.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return count;
}
/**
* 需手动调用
*/
public void closeConn(){
try {
if(conn!=null&&!conn.isClosed()){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}