JDBC
JDBC是怎么访问操作数据库的?
在说JDBC访问操作数据库的方法之前,我们先来回忆一下程序员是怎么访问操作数据库的。
我们要访问数据库,
第一步:需要提供正确的数据库的用户名和密码,还要保证网络通信的正常
第二步:输入需要执行的sql语句
第三步:显示(处理)结果
同理,java程序访问操作数据库 ,是利用接口来操作
1.Connection——连接数据库的接口(对应第一步)
2.PreparedStatement——执行sql语句的接口(对应第二步)
3.ResultSet——处理查询结果(对应第三步)
在连接数据库之前需要环境搭建,也就是导入数据库的jar包
java连接数据库分为五步
第一步:
加载驱动,目的是将上述的三个接口的实现读入到程序中,当然,不同的数据库加载驱动的方式是不同的,下述给出mysql和oracle两种加载驱动的方式
Class.forName("com.mysql.jdbc.Driver"); //mysql的加载驱动
Class.forName("oracle.jdbc.OracleDriver"); //oracle的加载驱动
第二步
创建连接Connection,此时需要提供数据库的用户名和密码
mysql的创建连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myschool","root","123456");
//'localhost'为本机IP地址;'myschool'为用户的sid;'root'为用户名;'123456'为密码
oracle的创建连接
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:xe","system","123456");
//'localhost'为本机的IP地址;‘xe’为用户的sid;‘system’为用户名;‘123456’为密码
第三步
创建PreparedStatement,用来执行sql语句,注意:这一步需要提供sql语句
pstmt = conn.prepareStatement(DELETE FROM student WHERE studentNo = 30014);
//也可以把sql语句单独提出来
String sql = "DELETE FROM student WHERE studentNo = 30014";
pstmt = conn.prepareStatement(sql);
第四步
如果进行的是查询操作(增删改操作忽略此步骤),利用ResultSet对查询到的结果进行处理
ResultSet rs = pstmt.executeQuery();
在这里,需要说一下ResultSet对象的使用,它代表的是本次查询的结构
rs.next()是让ResultSet指针指向数据的下一行,它返回值是Boolean,作用是判断下一行数据是否存在;
rs.next()如果返回值为true,获取这行的内容,若返回值为false,读取内容结束。
rs.next(1)是读取第一列,rs.next(2)是读取第二列…以此类推
如下图所示:
代码实现:
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
System.out.println("id \t" + rs.getInt(1));
System.out.println("name \t" + rs.getString(2));
System.out.println("bornDate " + rs.getDate(3));
System.out.println();
}
第五步
关闭资源,遵循先用后关的原则
先用的Connection,所以先关闭PreparedStatement
if(pstmt != null){
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}