what: jdbc是一组API
when: 应用程序和数据库通过JDBC实现数据交互
how:(严格来说分为以下五步:
Class.forName()加载驱动——
DriverManager获取Connection连接——
创建Statement(适用于简单的SQL语句,消耗小)/PreparedStatement(扩展了statement,开销大),数据库执行SQL语句——
返回ResultSet查询结果——
释放资源
)
for short:
1.加载jdbc驱动
2.创建数据库连接
3.创建Statement/PreparStatement,执行sql语句
4.处理执行结果
5.关闭资源
第一步,放在一个公共包里面(表已经建立好的基础上,并未放在配置文件中),然后连接:
public class DBUtils {
public static Connection getConn() {
Connection conn = null;
// MySQL的JDBC URL编写方式:jdbc:mysql://主机名称:连接端口/数据库的名称?参数=值
// 避免中文乱码要指定useUnicode和characterEncoding
// 执行数据库操作之前要在数据库管理系统上创建一个数据库,名字自己定,
String url = "jdbc:mysql://localhost:3306/StudySystem?"
+ "user=root&password=123456&useUnicode=true&characterEncoding=UTF8";
try {
Class.forName("com.mysql.jdbc.Driver");// 动态加载mysql驱动
// 一个Connection代表一个数据库连接
conn = DriverManager.getConnection(url);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}
第二步:在需要的对象下执行相应的操作,此操作为获取
public List<Student> getStudent()
{
//controller--service--dao通过三层调用写在此数据库操作类
//创建数据库连接对象
Connection conn = DBUtils.getConn();
ResultSet rs=null;
//集合类来保存student这种类型
List<Student> stus=new ArrayList<Student>();
String sql = "select * from STUDENT ";
try {
PreparedStatement pStatement = conn.prepareStatement(sql);//预处理
rs = pStatement.executeQuery(); //执行
while(rs.next())//将查询的结果放在集合类中,只要有下一条数据就不断的执行
{
Student s=new Student();//创建学生对象
s.setId(rs.getInt(1));
s.setStudentNo(rs.getString(2));
s.setPassword(rs.getString(3));
s.setStudentName(rs.getString(4));
s.setSex(rs.getString(5));
s.setSubject(rs.getString(6));
s.setStuClass(rs.getString(7));
stus.add(s);//每创建一个就放在对象中
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
DBUtils.closeConn(conn);//数据库关闭
}
return stus ;
}
第三步:关闭数据库链接,释放资源(注意关闭和打开的顺序相反)
public static void closeConn(Connection conn) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (null != conn) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}