-
关于preparestatement的详解5
/** * 将用户信息插入数据库 * @param uv * @return */ public int insertUser(UserVo uv){ int userId = 0; initDb(); **初始化连接数据库的方法 PreparedStatement pst=null; ResultSet rs=null; try { String sql="INSERT INTO usertable (user_name,user_password,user_sex,province_id,city_id,user_describe) VALUES (?,?,?,?,?,?)"; pst=con.prepareStatement(sql); pst.setString(1, uv.getUserName()); pst.setString(2, uv.getUserPassword()); pst.setString(3, uv.getUserSex()); pst.setInt(4, uv.getProvinceId()); pst.setInt(5, uv.getCityId()); pst.setString(6, uv.getUserDescribe()); pst.executeUpdate(); rs = pst.getGeneratedKeys();//获取自增长的列的新值 while(rs.next()){ userId=rs.getInt(1); } } catch (SQLException e) { try { con.rollback(); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } // TODO Auto-generated catch block e.printStackTrace(); } finally{ try { pst.close(); con.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return userId; }
着重讲解一下preparestatement的部分,有点看不懂
2012年8月30日 16:11
2个答案 按时间排序 按投票排序
-
采纳的答案
http://demojava.iteye.com/blog/720308
JDBC操作对象使用PreparedStatement代替Statement2012年8月30日 16:16
-
Statement与PreparedStatement区别
1、PreparedStatement能防止SQL注入问题,而Statement是动态拼出SQL,因此不能解决;
2、PreparedStatement对SQL进行预编译,因此如果我们采用绑定变量的SQL(语句类似,数据不同)数据库只需解析一次(生成执行计划),因此效率要高;
3、Statement由于没有采用绑定变量,因此可能每次都需要编译(生成执行计划),因此对于那种语句类似但数据不同的SQL每次都需要编译,效率低;
4、PreparedStatement开销要比Statement高, 因此如果SQL只执行一次,应该使用Statement。
5、在大多数情况下都应该使用PreparedStatement。2012年8月30日 16:22
相关推荐
PreparedStatement ps = connection.prepareStatement(sql); ps.setInt(1, 10); ``` 在这个例子中,我们想知道实际执行的SQL语句是"SELECT * FROM table WHERE id = 10"。为了实现这个需求,我们可以自定义一个辅助...
”占位符的SQL语句,进行硬解析并生成语法树,然后存储在当前线程的PrepareStatement缓存中,用stmt->id作为键。Execute阶段,客户端只需提供stmt->id和参数,服务器就能从缓存中找到已解析的语句,设置参数并执行,...
现金流量表(Statement of Cash Flows)是财务报告中的一个重要组成部分,它反映了企业在一定时期内的现金流入和流出情况。在会计实务中,现金流量表通常采用两种方法来编制:直接法(Direct Method)与间接法...
例如,`PreparedStatement pstmt = connection.prepareStatement("SELECT * FROM users WHERE username=? AND password=?");`,然后通过`pstmt.setString(1, username)`和`pstmt.setString(2, password)`设置参数值...
5. **创建带有类型、并发性和保持性的PreparedStatement**:`PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)` - **用途**:创建一个带...
JDBC 连接MySQL数据库的一系列详细步骤,包括JDBC API详解 1.DriverManager 2.Connection 3.Statement 4.ResultSet 5.PrepareStatement
例如:`PreparedStatement pstmt = conn.prepareStatement("INSERT INTO users VALUES (?, ?)");` ### 5. 数据处理 - ResultSet表示查询结果,可以通过`next()`方法逐行移动。例如:`while (rs.next()) { ... }` -...
3. **创建 Statement**:通过 `Connection.createStatement()` 或 `Connection.prepareStatement(sql)` 创建 `Statement` 或 `PreparedStatement` 对象。 4. **执行 SQL 语句**:使用 `Statement` 或 `...
PreparedStatement pstmt = conn.prepareStatement(insertSql); pstmt.setString(1, "John"); pstmt.setInt(2, 30); pstmt.executeUpdate(); ``` 在实际开发中,我们通常会使用ORM框架如Hibernate或MyBatis,它们...
Connection 代表和数据库的连接,其常用方法包括 getMetaData() 返回数据库的 MetaData 数据,createStatement() 创建并返回 Statement 对象,PrepareStatement(String sql) 创建并返回 PrepareStatement 对象。...
- `PreparedStatement prepareStatement(String sql)`:创建一个预编译的`PreparedStatement`对象,用于执行含有参数的SQL语句。 #### 四、操作ResultSet结果集 通过`Statement`对象的`executeQuery(String sql)`...
2. **PrepareStatement**:PrepareStatement主要用于预编译SQL语句,它允许我们在执行多次SQL操作时只需要编译一次,从而提高效率。在学员管理系统的增删改查操作中,我们可以看到PrepareStatement如何动态设置参数...
PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM users WHERE username=? AND password=?"); pstmt.setString(1, username); pstmt.setString(2, password); ``` 2. **输入验证与清理**: - ...
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO table (column1, column2) VALUES (?, ?)"); pstmt.setString(1, value1); pstmt.setInt(2, value2); pstmt.executeUpdate(); ``` 5. **...
PreparedStatement pstmt = connection.prepareStatement(sql); pstmt.setString(1, value1); pstmt.setString(2, value2); pstmt.executeUpdate(); ``` 处理结果集是查询操作的后续步骤。Statement或...
public PreparedStatement prepareStatement(String sql) throws SQLException { return connection.prepareStatement(sql); } @Override public void close() throws SQLException { pool.add(connection); ...
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO users (username, password) VALUES (?, ?)"); pstmt.setString(1, "laowang"); pstmt.setString(2, "1234"); pstmt.executeUpdate(); ``` 这种方法...
ps = conn.prepareStatement(sql); ps.setInt(1, 1); // 设置参数 rs = ps.executeQuery(); while (rs.next()) { System.out.println(rs.getString("column_name")); } } catch (ClassNotFoundException | ...
2. **创建Statement或PreparedStatement对象**:你可以使用`Connection`对象的`createStatement()`方法创建`Statement`,或者使用`prepareStatement()`方法创建预编译的`PreparedStatement`,以提高性能和安全性。...