本文章实在上一篇文章的基础上进行增删改查操作的。不懂得可以去看看第一篇。
http://blog.csdn.net/qq_36748278/article/details/76861334
父Statement————————>子PreparedStatement
父PreparedStatement————>子CallableStatement
这三个都是接口。用于和数据库连接是使用的。
Statement接口
1、用于执行静态 SQL 语句并返回它所生成结果的对象。
2、在默认情况下,同一时间每个 Statement 对象只能打开一个 ResultSet 对象。
3、因此,如果读取一个 ResultSet 对象与读取另一个交叉,则这两个对象必须是由不同的 Statement 对象生成的。
ResultSet executeQuery(String sql) :执行给定的 SQL 语句,该语句返回单个 ResultSet 对象。 通常用于查找。
int executeUpdate(String sql) : 执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句,或者不返回任何内容的 SQL 语句。
PreparedStatement接口:表示预编译的 SQL 语句的对象。
下标是指?所在第几个位置,下标就是几。下标从1开始。根据参数类型选个对应的方法,比如int类型的值就选择setInt()方法
1、 void setString(int parameterIndex, String x) :将指定参数设置为x(第一个参数是下标从1开始,x 是字符串类型)
2、 void setFloat(int parameterIndex, float x) :将指定参数设置为x(第一个参数是下标从1开始,x 是float类型)
3、void setInt(int parameterIndex, int x) :将指定参数设置为x(第一个参数是下标从1开始,x 是int类型)
举个例子,在Student上进行更新操作
public void update(Student stu) throws SQLException, IOException, ClassNotFoundException{
Connection con = null;
PreparedStatement ps = null; //采用预编译的处理对象
try {
con = this.getConnection(); //进行数据库连接
String sql = "update Student set sname = ?,sage = ? where stuid = ?";
ps = con.prepareStatement(sql);
ps.setString(1,stu.getName());
ps.setInt(2, stu.getAge());
ps.setInt(3,stu.getId());
int num = ps.executeUpdate(); //返回值表示改变了几行数据。
System.out.println("update方法改变了的数据的行数为:" + num);
}finally{
this.close(con, ps, null);
}
}
CallableStatement
用于执行 SQL 存储过程的接口。