pstmt.setString(1,username);
pstmt.setString(2,password);
ResultSet rs=pstmt.executeQuery();
if(rs.next()){
return "success";
}else{
return "error";
}
每次都会执行SQL语句,相关数据库都要执行SQL语句的编译。
Statement为一条Sql语句生成执行计划,
如果要执行两条sql语句
select colume from table where colume=1;
select colume from table where colume=2;
会生成两个执行计划
一千个查询就生成一千个执行计划!
Connection con = DriverManager.getConnection(url, user, pass);
String sql = "";
Statement stat = con.createStatement(sql);
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table2");
Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和execute。使用哪一个方法由 SQL 语句所产生的内容决定。
返回值是一个结果集Result。该结果集永远不能为null。
用于产生单个结果集的语句,例如 SELECT 语句
Statement stat = con.createStatement(sql);
ResultSet rs = stat.executeQuery();
返回值是int型数据。该值代表执行insert,update,delete语句后的更新行数。若为0,则表示没有执行成功!
用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQLDDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。
stat.executeUpdate(sql);
用于执行返回多个结果集、多个更新计数或二者组合的语句。
用于处理动态SQL语句,在执行前会有一个预编译过程,这个过程是有时间开销的,虽然相对数据库的操作,该时间开销可以忽略不计,
但是PreparedStatement的预编译结果会被缓存,下次执行相同的预编译语句时,就不需要编译,只要将参数直接传入编译过的语句执行代码
中就会得到执行,所以,对于批量处理可以大大提高效率。
(1) PreparedStatement接口继承Statement,PreparedStatement 实例包含已编译的 SQL 语句,
所以其执行速度要快于 Statement 对象。
(2)作为 Statement 的子类,PreparedStatement 继承了 Statement 的所有功能。
三种方法**execute**、 **executeQuery** 和 **executeUpdate** 已被更改以使之不再需要参数
Connection con = DriverManager.getConnection(url, user, pass);
String sql = "";
PrepareStatement pstmt = con.PrepareStatement(sql);
ResultSet rs = pstmt.executeQuery("SELECT a, b, c FROM Table2");
PreparedStatement接口继承Statement。所以也为executeQuery、executeUpdate 和execute三种。
返回值是一个结果集Result。该结果集永远不能为null。
用于产生单个结果集的语句,例如 SELECT 语句
Statement stat = con.createStatement(sql);
ResultSet rs = stat.executeQuery();
返回值是int型数据,该值代表执行insert,update,delete语句后的更新行数。若为0,则表示没有执行成功!
用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQLDDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。
stat.executeUpdate(sql);
用于执行返回多个结果集、多个更新计数或二者组合的语句。
该语句可以是任何种类的 SQL 语句
execute 方法返回一个 boolean 值,以指示第一个结果的形式。必须调用 getResultSet 或 getUpdateCount 方法来检索结果,并且必须调用 getMoreResults 移动到任何后面的结果。
返回:
如果第一个结果是 ResultSet 对象,则返回 true;如果第一个结果是更新计数或者没有结果,则返回 false
意思就是如果是查询的话返回true,如果是更新或插入的话就返回false了;
stmt.executeUpdate("insert into tb_name (col1,col2,col2,col4) values ('"+var1+"','"+var2+"',"+var3+",'"+var4+"')");//stmt是Statement对象实例
perstmt = con.prepareStatement("insert into tb_name (col1,col2,col2,col4) values (?,?,?,?)");
pstmt.setString(1,var1);
pstmt.setString(2,var2);
pstmt.setString(3,var3);
pstmt.setString(4,var4);
pstmt.executeUpdate(); //prestmt是 PreparedStatement 对象实例
可防止暴力传密码。