0 0

关于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个答案 按时间排序 按投票排序

0 0

采纳的答案

http://demojava.iteye.com/blog/720308
JDBC操作对象使用PreparedStatement代替Statement

2012年8月30日 16:16
0 0

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

相关推荐

    利用JDBC的PrepareStatement打印真实SQL的方法详解

    PreparedStatement ps = connection.prepareStatement(sql); ps.setInt(1, 10); ``` 在这个例子中,我们想知道实际执行的SQL语句是"SELECT * FROM table WHERE id = 10"。为了实现这个需求,我们可以自定义一个辅助...

    MySQL prepare原理详解

    ”占位符的SQL语句,进行硬解析并生成语法树,然后存储在当前线程的PrepareStatement缓存中,用stmt->id作为键。Execute阶段,客户端只需提供stmt->id和参数,服务器就能从缓存中找到已解析的语句,设置参数并执行,...

    cash flow statement prepare

    现金流量表(Statement of Cash Flows)是财务报告中的一个重要组成部分,它反映了企业在一定时期内的现金流入和流出情况。在会计实务中,现金流量表通常采用两种方法来编制:直接法(Direct Method)与间接法...

    JDBC连接操作Oracle及Mysql详解

    例如,`PreparedStatement pstmt = connection.prepareStatement("SELECT * FROM users WHERE username=? AND password=?");`,然后通过`pstmt.setString(1, username)`和`pstmt.setString(2, password)`设置参数值...

    JDBC学习文档

    5. **创建带有类型、并发性和保持性的PreparedStatement**:`PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)` - **用途**:创建一个带...

    JDBC 连接MySQL数据库的一系列详细步骤

    JDBC 连接MySQL数据库的一系列详细步骤,包括JDBC API详解 1.DriverManager 2.Connection 3.Statement 4.ResultSet 5.PrepareStatement

    JDBC操作数据库详解

    例如:`PreparedStatement pstmt = conn.prepareStatement("INSERT INTO users VALUES (?, ?)");` ### 5. 数据处理 - ResultSet表示查询结果,可以通过`next()`方法逐行移动。例如:`while (rs.next()) { ... }` -...

    数据库连接JDBC详解

    3. **创建 Statement**:通过 `Connection.createStatement()` 或 `Connection.prepareStatement(sql)` 创建 `Statement` 或 `PreparedStatement` 对象。 4. **执行 SQL 语句**:使用 `Statement` 或 `...

    java连接mysql操作详解

    PreparedStatement pstmt = conn.prepareStatement(insertSql); pstmt.setString(1, "John"); pstmt.setInt(2, 30); pstmt.executeUpdate(); ``` 在实际开发中,我们通常会使用ORM框架如Hibernate或MyBatis,它们...

    详细介绍在tomcat中配置数据源原理

    Connection 代表和数据库的连接,其常用方法包括 getMetaData() 返回数据库的 MetaData 数据,createStatement() 创建并返回 Statement 对象,PrepareStatement(String sql) 创建并返回 PrepareStatement 对象。...

    JDBC访问数据库步骤详解.doc

    - `PreparedStatement prepareStatement(String sql)`:创建一个预编译的`PreparedStatement`对象,用于执行含有参数的SQL语句。 #### 四、操作ResultSet结果集 通过`Statement`对象的`executeQuery(String sql)`...

    JDBC-Student.rar_callablestatement_dbtoobject_java 学员 管理 系统_jdbc

    2. **PrepareStatement**:PrepareStatement主要用于预编译SQL语句,它允许我们在执行多次SQL操作时只需要编译一次,从而提高效率。在学员管理系统的增删改查操作中,我们可以看到PrepareStatement如何动态设置参数...

    SQL注入详解.docx

    PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM users WHERE username=? AND password=?"); pstmt.setString(1, username); pstmt.setString(2, password); ``` 2. **输入验证与清理**: - ...

    JDBC详解.docx

    PreparedStatement pstmt = conn.prepareStatement("INSERT INTO table (column1, column2) VALUES (?, ?)"); pstmt.setString(1, value1); pstmt.setInt(2, value2); pstmt.executeUpdate(); ``` 5. **...

    Java数据库技术详解

    PreparedStatement pstmt = connection.prepareStatement(sql); pstmt.setString(1, value1); pstmt.setString(2, value2); pstmt.executeUpdate(); ``` 处理结果集是查询操作的后续步骤。Statement或...

    JDBC自定义连接池过程详解

    public PreparedStatement prepareStatement(String sql) throws SQLException { return connection.prepareStatement(sql); } @Override public void close() throws SQLException { pool.add(connection); ...

    JDBC代码详解.docx

    PreparedStatement pstmt = conn.prepareStatement("INSERT INTO users (username, password) VALUES (?, ?)"); pstmt.setString(1, "laowang"); pstmt.setString(2, "1234"); pstmt.executeUpdate(); ``` 这种方法...

    Servlet详解.pdf

    ps = conn.prepareStatement(sql); ps.setInt(1, 1); // 设置参数 rs = ps.executeQuery(); while (rs.next()) { System.out.println(rs.getString("column_name")); } } catch (ClassNotFoundException | ...

    JDBC连接数据库详解

    2. **创建Statement或PreparedStatement对象**:你可以使用`Connection`对象的`createStatement()`方法创建`Statement`,或者使用`prepareStatement()`方法创建预编译的`PreparedStatement`,以提高性能和安全性。...

Global site tag (gtag.js) - Google Analytics