/** * 作废用户信息 * @param userIdIntArray */ public void deleteUser(int[] userIdIntArray) { initDb(); PreparedStatement pst = null; int tempFlag = 0; try { String sql = "UPDATE usertable SET user_display = 0 WHERE user_id = ?"; pst = con.prepareStatement(sql); for(int i=0;i<userIdIntArray.length;i++) { pst.setInt(1, userIdIntArray[i]); tempFlag = pst.executeUpdate(); System.out.println(tempFlag); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { pst.close(); con.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
executeUpdate();不是无返回吗?为什么要用tempFlag = pst.executeUpdate();System.out.println(tempFlag);????
1 executeUpdate 执行dml操作 结果是影响的行数,比如更新了几行,,通过这个我们可以判断是否成功
2 executeQuery 执行dql 结果是ResultSet(代表了返回的记录结果集)。
方法executeQuery
用于产生单个结果集(ResultSet)的语句,例如 SELECT 语句。 被使用最多的执行 SQL 语句的方法。这个方法被用来执行 SELECT 语句,它几乎是使用最多的 SQL 语句。但也只能执行查询语句,执行后返回代表查询结果的ResultSet对象。
如:
//加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
//使用DriverManager获取数据库连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test",
"root","1234");
//使用Connection来创建一个Statment对象
Statement stmt = conn.createStatement();
//执行查询语句
ResultSet rs =stmt.executeQuery("select * from teacher");
//把查询结果输出来
while (rs.next())
{
System.out.println(rs.getInt(1) + "/t" + rs.getString(2));
}
2>方法executeUpdate
用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数(int),指示受影响的行数(即更新计数)。对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。
如:
//加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
//使用DriverManager获取数据库连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test",
"root","1234");
//使用Connection来创建一个Statment对象
Statement stmt = conn.createStatement();
//执行DML语句,返回受影响的记录条数
return stmt.executeUpdate(sql);