JDBC中Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute。使用哪一个方法由 SQL 语句所产生的内容决定。
一、boolean execute(String sql)
允许执行查询语句、更新语句、DDL语句。
返回值为true时,表示执行的是查询语句,可以通过getResultSet方法获取结果;
返回值为false时,执行的是更新语句或DDL语句,getUpdateCount方法获取更新的记录数量。
例子:
st = con.createStatement();
boolean ret = st.execute(“select username,age from employee”);
//boolean ret = st.execute(“update employee set age=10”);
con.commit();
if (ret == true) {
System.out.println(“获取的结果集是:”);
ResultSet rs = st.getResultSet();
while (rs.next()) {
System.out.println(rs.getString(1) + “:” + rs.getInt(2));
}
rs.close();
} else {
System.out.println(“更新的结果是:” + st.getUpdateCount());
}
二、int executeUpdate(String sql)
执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句,或者不返回任何内容的 SQL 语句(如 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);
三、ResultSet executeQuery(String sql)
执行给定的 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));
}