黑马程序员技术交流社区
标题: JDBC使用(中) [打印本页]
作者: 李玉生 时间: 2012-10-6 22:58
标题: JDBC使用(中)
Connection
一个Connection(连接)就是一个与特定数据库的会话。在连接的上下文环境中才可以执行SQL语句和返回结果。Connection对象的数据库可以提供描述它的表、SQL语法和存储过程等的信息。它较为重要的方法有:
public Statement createStatement() throws SQLException
创建一个Statement对象,用于发送SQL语句到数据库。没有参数的SQL语句通常使用Statement对象执行。如果希望多次执行,使用PreparedStatement更为高效。
public PreparedStatement prepareStatement(String sql) throws SQLException
创建一个PreparedStatement对象,发送参数化SQL语句sql到数据库。
SQL语句可以预先编译并存储到PreparedStatement语句中。这个对象可以用来高效地多次执行语句。
其中:参数sql是包含多个“?”参数的SQL语句,“?”表示输入参数由用户进行设置。
例如:
创建Statement对象语句如下:
stmt = con.createStatement();
创建PreparedStatement对象语句如下:
pstmt = con.prepareStatement("UPDATE Xuesheng SET 班级 = ? WHERE 班级 = ?");
Statement
Statement对象用于执行一个静态的SQL语句并返回它产生的结果。在缺省情况下,任一时刻每个Statement对象只产生一个ResultSet集。对数据库希望有不同操作得到结果集时,需要创建不同的Statement对象。它的较为重要的方法有:
public ResultSet executeQuery(String sql) throws SQLException
执行给定的sql语句,返回一个ResultSet对象。
public int executeUpdate(String sql) throws SQLException
执行给定的sql语句,可以是插入(INSERT)、更新(UPDATE)或者删除(DELETE)等,也可以是一个空语句,执行DDL语句。返回值是操作的记录个数。
public ResultSet getResultSet() throws SQLException
以ResultSet对象格式返回当前结果集,每个结果集只调用一次。
例如:
从表tCustomer中返回CID为z1的记录的CID(客户ID)和CPin(密码)列,语句行为:
rs = stmt.executeQuery("SELECT CID,CPin from tCustomer WHERE CID= 'z1' ");
PreparedStatement
PreparedStatement代表预编译的SQL语句的对象。一个SQL语句预编译后存储到PreparedStatement对象中,这个对象用来多次执行语句。PreparedStatement继承于Statement,扩展了Statement的用途,提高了Statement的执行效率。它与Statement对象有两点不同:
(1) 同一个对象可以多次使用。
(2) 它的SQL语句可以带输入(IN)参数。
PreparedStatement在程序语句中的输入参数使用占位符“?”来实现。必须使用类提供的设置方法设置语句中占位符的具体值,才能执行语句。如下面的程序段,根据ID的取值更新EMPLOYEES表中SALARY字段的取值,将第一个占位符代表的参数设置为10000.00,将第二个占位符代表的参数设置为111,语句执行的结果是EMPLOYEES表中ID为111的记录的SALARY取值为10000.00。
PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES
SET SALARY = ? WHERE ID = ?");
pstmt.setBigDecimal(1, 10000.00)
pstmt.setInt(2, 111);
pstmt.executeUpdate();
类PreparedStatement提供的常用方法如下:
public boolean execute() throws SQLException
执行PreparedStatement对象中的任一类型的SQL语句。如果返回true,则调用getResultSet方法取得ResultSet集;如果返回false,则调用getUpdateCount方法获得更新数。
public ResultSet executeQuery() throws SQLException
执行SQL查询,并返回查询产生的结果集。
public int executeUpdate() throws SQLException
执行对象中的SQL语句。如果是一些更新操作,如插入(INSERT)、修改(UPDATE)和删除(DELETE )等,则返回操作的个数。
常用的设置方法:
public void setBigDecimal(int parameterIndex, BigDecimal x) throws SQLException
在第parameterIndex位置设置BigDecimal型x。
public void setBoolean(int parameterIndex, boolean x) throws SQLException
在第parameterIndex位置设置布尔型x。
public void setByte(int parameterIndex, byte x) throws SQLException
在第parameterIndex位置设置字节型x。
public void setLong(int parameterIndex, long x) throws SQLException
在第parameterIndex位置设置长整型x。
public void setNull(int parameterIndex, int sqlType) throws SQLException
在第parameterIndex位置设置为空x。
public void setObject(int parameterIndex, Object x) throws SQLException
在第parameterIndex位置设置对象x。
public void setShort(int parameterIndex, short x) throws SQLException
在第parameterIndex位置设置短整型x。
void setString(int parameterIndex, String x) throws SQLException
在第parameterIndex位置设置字符串型x。
public void setTime(int parameterIndex, Time x) throws SQLException
在第parameterIndex位置设置时间型x。
public void setTimestamp(int parameterIndex, Timestamp x) throws SQLException
在第parameterIndex位置设置时间戳型x。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |