下面是DB类,也就是数据库连接及操作类:
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DB {
/*以下是定义一些字段*/
private String url = "jdbc:mysql://localhost:3306/dao?user=root&password=1814"; //数据库URL
private String className = "com.mysql.jdbc.Driver"; //数据库驱动类路径
private Connection conn = null; //声明一个Connection对象
private Statement stmt = null; //声明一个Statement对象
private PreparedStatement pstmt = null; //声明一个PreparedStatement对象
/*初始化一些东西:加载数据库驱动,并建立连接*/
public void init(){
try {
//加载数据库驱动
Class.forName(className).newInstance();
//建立连接,连接到由属性url指定的数据库URL,并指定登录数据库的用户名和密码
conn = DriverManager.getConnection(url);
//在初始化方法里面首先获取Statement对象
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY );
} catch (Exception e) {
e.printStackTrace();
System.out.println("初始化方法init()出现错误,加载数据库驱动失败 或者 建立连接失败!!");
}
}
/*构造方法*/
public DB(){
init();
}
/*********************************以下方法是针对Statement的****************************************/
/*查询数据库,返回结果集ResultSet*/
public ResultSet executeQuery(String sql){
ResultSet rs = null;
try {
rs = stmt.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
System.out.println("executeQuery(String sql)方法出错!!");
}
return rs;
}
/*对数据库中的数据进行增加、修改或删除,返回受影响的行数*/
public int executeUpdate(String sql){
int iCount = 0;
try {
iCount = stmt.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
System.out.println("executeUpdate(String sql)方法出错!!");
}
return iCount;
}
/*********************************以下方法是针对PreparedStatement的****************************/
/*依据SQL语句给pstmt赋上值*/
public void readyPreparedStatement(String sql){
try {
pstmt = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY );
} catch (SQLException e) {
e.printStackTrace();
System.out.println("readyPreparedStatement()方法出错!!");
}
}
/*以下是一些 PreparedStatement 设置的方法*/
public void setString(int index, String value){
try {
pstmt.setString(index, value);
} catch (SQLException e) {
e.printStackTrace();
System.out.println("PreparedStatement的设置方法setString()出错!!");
}
}
public void setInt(int index, int value){
try {
pstmt.setInt(index, value);
} catch (SQLException e) {
e.printStackTrace();
System.out.println("PreparedStatement的设置方法setInt()出错!!");
}
}
public void setBoolean(int index, boolean value){
try {
pstmt.setBoolean(index, value);
} catch (SQLException e) {
e.printStackTrace();
System.out.println("PreparedStatement的设置方法setBoolean()出错!!");
}
}
public void setDate(int index, Date value){
try {
pstmt.setDate(index, value);
} catch (SQLException e) {
e.printStackTrace();
System.out.println("PreparedStatement的设置方法setDate()出错!!");
}
}
public void setLong(int index, long value){
try {
pstmt.setLong(index, value);
} catch (SQLException e) {
e.printStackTrace();
System.out.println("PreparedStatement的设置方法setLong()出错!!");
}
}
public void setFloat(int index, float value){
try {
pstmt.setFloat(index, value);
} catch (SQLException e) {
e.printStackTrace();
System.out.println("PreparedStatement的设置方法setFloat()出错!!");
}
}
public void setBytes(int index, byte[] value){
try {
pstmt.setBytes(index, value);
} catch (SQLException e) {
e.printStackTrace();
System.out.println("PreparedStatement的设置方法setBytes()出错!!");
}
}
/*查询数据库,返回结果集ResultSet*/
public ResultSet executeQuery(){
if (pstmt != null) {
try {
return pstmt.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
System.out.println("executeQuery()方法出错!!");
return null;
}
} else{
System.out.println("PreparedStatement 未给定值!!");
return null;
}
}
/*对数据库中的数据进行增加、修改或删除,返回受影响的行数*/
public int executeUpdate(){
int iCount = 0;
if (pstmt != null){
try {
iCount = pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
System.out.println("executeUpdate()方法出错!!");
}
} else{
System.out.println("PreparedStatement 未给定值!!");
}
return iCount;
}
/*********************************************************************************************************/
/*关闭所有连接*/
public void close(){
try {
if (stmt != null) {
stmt.close();
stmt = null;
}
if (pstmt != null) {
pstmt.close();
pstmt = null;
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
System.out.println("关闭所有连接的方法close()出错了!!");
}
}
}
下面是测试DB类的一个Java小程序(用于往表中插入一条记录,并在插入后,对该表进行查询):
public class DBTest {
public static void main(String[] args) throws Exception{
String sql = "insert into usertbl(id,username,password) values(?,?,?)";
DB db = new DB();
db.readyPreparedStatement(sql);
db.setInt(1, 5);
db.setString(2, "sss");
db.setString(3,"yyy");
db.executeUpdate();
db.close();
db.init();
db.executeQuery("select * from usertbl");
}
}