本方法是基于jdbc对数据库的操作,比较低端,唯一的亮点是具有普适性,因为采用了封装对象的方法,可以将多个不同参数封装成对象,同时传入sql语句,简洁明了。
- JDBC
package com.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DB {
private Connection con;
private PreparedStatement pstm;
private String user = "用户名";
private String password = "密码";
private String className = "com.mysql.jdbc.Driver";
private String url = "jdbc:mysql://localhost:3306/数据库名称?useUnicode=true&characterEncoding=utf-8";
public DB() {
try {
Class.forName(className);
} catch (ClassNotFoundException e) {
System.out.println("加载数据库驱动失败!");
e.printStackTrace();
}
}
/** 创建数据库连接 */
public Connection getCon() {
try {
con = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
System.out.println("创建数据库连接失败!");
con = null;
e.printStackTrace();
}
return con;
}
public void doPstm(String sql, Object[] params) {
if (sql != null && !sql.equals("")) {
if (params == null)
params = new Object[0];
getCon();
if (con != null) {
try {
System.out.println(sql);
pstm = con.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
for (int i = 0; i < params.length; i++) {
pstm.setObject(i + 1, params[i]);
}
pstm.execute();
} catch (SQLException e) {
System.out.println("doPstm()方法出错!");
e.printStackTrace();
}
}
}
}
public ResultSet getRs() throws SQLException {
return pstm.getResultSet();
}
public int getCount() throws SQLException {
return pstm.getUpdateCount();
}
public void closed() {
try {
if (pstm != null)
pstm.close();
} catch (SQLException e) {
System.out.println("关闭pstm对象失败!");
e.printStackTrace();
}
try {
if (con != null) {
con.close();
}
} catch (SQLException e) {
System.out.println("关闭con对象失败!");
e.printStackTrace();
}
}
}
- 调用方法
String sql="insert into 表名(字段1,字段2,...) values(?,?,...)";
Object[] params={字段1,字段2,...};
DB mydb=new DB();
try
{
mydb.doPstm(sql, params);
ResultSet rs=mydb.getRs();
while(rs.next()){
A a=new A();
a.setId(rs.getString("id"));
......
}
rs.close();
}catch(Exception e){
e.printStackTrace();
}
mydb.closed();