JDBC是一套访问数据库的接口,具体的实现需要不同的数据库厂家来实现。(Java多态的体现)
JDBC连接数据库的步骤
(1)加载驱动
(2)连接数据库
(3)使用语句操作数据库
(4)关闭数据库连接,释放资源
Statement 接口实现数据库的增删改,不过开发的时候一般使用PreparedStatement,
所谓的JDBC其实就是(Java DataBase Connectivity),主要是用来连接数据库的接口,内容不多,趁着有时间复习一下,时间长了都忘了。
它涉及的Java API主要是java.sql.* 和javax.sql.*,这个包我开始以为在mysql-connector.jar内,哈哈,怎么会在哪里呢,经过调查,这两个包在D:\Pro_ware\jre1.8.0\lib\rt.jar内
原来,好多常用的包都在这个jar包里面,以下是截图。
连接数据库用的是DriverManager.getConnection(dbUrl, dbUsername, dbPassword);
当然,你之前需要用反射加载驱动,Class.forName(jdbcName)
连接成功数据库之后,就可以利用Statement接口传入sql语句,进行数据库的操作CRUD.一般情况下,推荐用PreparedStatement接口进行预编译,这样可以让SQL拥有参数,防止SQL注入。而CallableStatement可以进行数据库存储过程(procedure)的调用。给出示例demo如下:
public class PreStatDemo {
private static DbUtil dbUtil = new DbUtil();
public static int updateStudent(Student student)throws Exception{
Connection con =dbUtil.getCon();
String sql = "update t_student set stuName=?,nickName=?,address=?,sex=?,rank=? where id=? ";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, student.getStuName());
pstmt.setString(2, student.getNickName());
pstmt.setString(3, student.getAddress());
pstmt.setString(4, student.getSex());
pstmt.setInt(5, student.getRank());
pstmt.setInt(6, student.getId());
int result = pstmt.executeUpdate();
return result;
}
}
这是一个简单的更新操作,result返回成功执行的条数。而执行CRUD中的Retrieve检索会有稍许不同,但都差不多。无非是ResultSet接口来接收查询结果,贴出代码来看看。
public static void listStudent()throws Exception{
Connection con = dbUtil.getCon();
String sql = "select * from t_student";
PreparedStatement pstmt = con.prepareStatement(sql);
ResultSet rs =pstmt.executeQuery();
while(rs.next()){
int id = rs.getInt("id");
String stuName = rs.getString("stuName");
String nickName = rs.getString("nickName");
String address = rs.getString("address");
String sex = rs.getString("sex");
int rank = rs.getInt("rank");
System.out.println(stuName +" "+ nickName+" "+ " "+ address);
}
}
对啦,还有execute、executeQuery和executeUpdate的区别也添加一下。大概基础就这些,以后再补。
- executeQuery 只执行查 (select语句)
- executeUpdate 执行 增删改 (insert或者update/delete语句,)
- execute 执行 增删改查