关于使用PreparedStatement的小知识点

    Statement主要用于执行静态SQL语句,即内容固定不变的SQL语句。Statement每执行一次都要对传入的SQL语句编译一次,效率较差。某些情况下,SQL语句只是其中的参数有所不同,其余子句完全相同,适用于PreparedStatement。PreparedStatement是接口,继承自Statement接口。PreparedStatement 实例包含已事先编译的 SQL 语句,SQL 语句可有一个或多个 IN 参数,IN参数的值在 SQL 语句创建时未被指定。该语句为每个 IN 参数保留一个问号(“?”)作为占位符。

     每个问号的值必须在(execute、 executeQuery 和 executeUpdate )语句执行之前,通过适当的setInt或者setString 等方法提供。由于 PreparedStatement 对象已预编译过,所以其执行速度要快于 Statement 对象。因此,多次执行的 SQL 语句经常创建为 PreparedStatement 对象,以提高效率。

		User resultUser=null;
		String sql="select * from t_user where userName=? and password=?";
		
		try{
			PreparedStatement pstmt=con.prepareStatement(sql);
			pstmt.setString(1, user.getUserName());
			pstmt.setString(2, user.getPassword());		
			
			ResultSet rs=pstmt.executeQuery();
			
			if(rs.next())//如果该结果集中有数据,说明在数据库中已经查到数据
			{
				resultUser = new User();				
				resultUser.setId(rs.getInt("id"));
				resultUser.setUserName(rs.getString("userName"));//rs.getString("userName")获取结果集中指定列的值
				resultUser.setPassword(rs.getString("password"));//
			}

猜你喜欢

转载自salmon2016.iteye.com/blog/2323225