数据库连接工具类
package util;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
public class DbUtil {
private static DbUtil dbUtil;
private String driver;
private String url;
private String user;
private String password;
//单例模式,避免重复调用
public static DbUtil getDbUtil() {
if (dbUtil == null) {
dbUtil = new DbUtil();
}
return dbUtil;
}
private DbUtil() {
Properties p = new Properties();
try {
p.load(DbUtil.class.getClassLoader().getResourceAsStream("db.properties"));
driver = p.getProperty("driver");
url = p.getProperty("url");
user = p.getProperty("user");
password = p.getProperty("password");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//释放连接,避免占用太多资源
public void close(Connection conn, PreparedStatement p, ResultSet set) {
if (set != null) {
try {
set.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (p != null) {
try {
p.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//获取连接
public Connection getConn() {
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
}
配置文件(此处为mysql 连接,若想换数据库,则修改配置文件即可,上述工具类中绑定的是db.properties。也就是本配置文件的名字。配置文件放src目录下即可。)
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/exame?serverTimezone=GMT%2B8
user=root
password=123456
数据库插入:
public int addStudentPaperLink(int studentid, int paperid) {
// 获取数据库的连接
Connection conn = DbUtil.getDbUtil().getConn();
// 绑定sql的方法
PreparedStatement p = null;
// 定义sql语句
String sql = "insert into student_paper(studentid,paperid,state) values(?,?,?) ";
try {
// 绑定sql语句
p = conn.prepareStatement(sql);
// 将sql中的?用参数替代
p.setInt(1, studentid);
p.setInt(2, paperid);
p.setString(3, "未考");
// 将查询的结果放入set结果集中
int key = p.executeUpdate();
// key为执行影响行数
return key;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// 释放连接
DbUtil.getDbUtil().close(conn, p, null);
}
// 返回对象。 如果结果集不为空,则对象已经存放好了信息。如果结果集为空,则没有存放入信息
return 0;
}
数据库删除:
public int deleteStudent(int id) {
// 获取数据库的连接
Connection conn = DbUtil.getDbUtil().getConn();
// 绑定sql的方法
PreparedStatement p = null;
// 定义sql语句
String sql = "delete from student where id=? ";
try {
// 绑定sql语句
p = conn.prepareStatement(sql);
// 将sql中的?用参数替代
p.setInt(1, id);
// 将查询的结果放入set结果集中
int key = p.executeUpdate();
// key为执行影响行数
return key;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// 释放连接
DbUtil.getDbUtil().close(conn, p, null);
}
// 返回对象。 如果结果集不为空,则对象已经存放好了信息。如果结果集为空,则没有存放入信息
return 0;
}
数据库修改:
public int updateStudentSubject(int id, String state) {
// 获取数据库的连接
Connection conn = DbUtil.getDbUtil().getConn();
// 绑定sql的方法
PreparedStatement p = null;
// 定义sql语句
String sql = "update student_subject set state=? where id=? ";
try {
// 绑定sql语句
p = conn.prepareStatement(sql);
// 将sql中的?用参数替代
p.setString(1, state);
p.setInt(2, id);
// 将查询的结果放入set结果集中
int key = p.executeUpdate();
// key为执行影响行数
return key;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// 释放连接
DbUtil.getDbUtil().close(conn, p, null);
}
// 返回对象。 如果结果集不为空,则对象已经存放好了信息。如果结果集为空,则没有存放入信息
return 0;
}
数据库单个属性查询:
public String getStudentState(String stuno) {
// 获取数据库的连接
Connection conn = DbUtil.getDbUtil().getConn();
// 绑定sql的方法
PreparedStatement p = null;
// 结果集。用于存放数据库中取出的数据
ResultSet set = null;
// 初始化state。用于存放后续取出的信息
String state = null;
// 定义sql语句
String sql = "select state from student where stuno=? ";
try {
// 绑定sql语句
p = conn.prepareStatement(sql);
// 将sql中的?用参数替代
p.setString(1, stuno);
// 将查询的结果放入set结果集中
set = p.executeQuery();
// 如果结果集不为空。set.next()=true
if (set.next()) {
// 将结果集的信息存放到一开始初始化的对象中
state = set.getString("state");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// 释放连接
DbUtil.getDbUtil().close(conn, p, set);
}
// 返回对象。 如果结果集不为空,则对象已经存放好了信息。如果结果集为空,则没有存放入信息
return state;
}
数据库单个对象查询:
public Student Login(String stuno, String pwd) {
// 获取数据库的连接
Connection conn = DbUtil.getDbUtil().getConn();
// 绑定sql的方法
PreparedStatement p = null;
// 结果集。用于存放数据库中取出的数据
ResultSet set = null;
// 初始化学生对象。用于存放后续取出的学生信息
Student stu = null;
// 定义sql语句
String sql = "select * from student where stuno=? and pwd =?";
try {
// 绑定sql语句
p = conn.prepareStatement(sql);
// 将sql中的?用参数替代
p.setString(1, stuno);
p.setString(2, pwd);
// 将查询的结果放入set结果集中
set = p.executeQuery();
// 如果结果集不为空。set.next()=true
if (set.next()) {
// 将结果集的信息存放到一开始初始化的对象中
stu = new Student(set.getInt("id"), set.getString("name"), set.getString("stuno"), set.getString("pwd"),
set.getString("state"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// 释放连接
DbUtil.getDbUtil().close(conn, p, set);
}
// 返回对象。 如果结果集不为空,则对象已经存放好了信息。如果结果集为空,则没有存放入信息
return stu;
}
数据库集合查询:
public List getStudentByPaperId(int id) {
// 获取数据库的连接
Connection conn = DbUtil.getDbUtil().getConn();
// 绑定sql的方法
PreparedStatement p = null;
// 结果集。用于存放数据库中取出的数据
ResultSet set = null;
// 初始化题目集合对象。用于存放后续取出的学生信息
List list = new ArrayList();
// 定义sql语句
String sql = "select *,b.state from student a join student_paper b on a.id=b. studentid where b.paperid=? ";
try {
// 绑定sql语句
p = conn.prepareStatement(sql);
p.setInt(1, id);
// 将查询的结果放入set结果集中
set = p.executeQuery();
// 如果结果集不为空。set.next()=true
while (set.next()) {
// 将结果集的信息存放到一开始初始化的对象中
Student stu = new Student(set.getInt("id"), set.getString("name"), set.getString("stuno"),
set.getString("pwd"), set.getString("state"));
stu.setPaperState(set.getString("b.state"));
list.add(stu);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// 释放连接
DbUtil.getDbUtil().close(conn, p, set);
}
// 返回对象。 如果结果集不为空,则对象已经存放好了信息。如果结果集为空,则没有存放入信息
return list;
}