您的位置:首页 > 数据库

关于JDBC(二)--- 执行SQL语句

2012-11-14 23:32 183 查看
上一篇我们得到Connection对象conn,之后我们可以用conn生成一个Statement对象来执行SQL语句。

Statement stat = conn.createStatement();

Statement接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute,使用哪一个方法由 SQL 语句所产生的内容决定。

方法executeQuery

用于产生单个结果集的语句,例如 SELECT 语句。 这个方法被用来执行 SELECT 语句,它几乎是使用最多的 SQL 语句。

方法executeUpdate

用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。对于 CREATE TABLE 或 DROP
TABLE 等不操作行的语句,executeUpdate 的返回值总为零。

方法execute:

可以执行任意的SQL语句,返回多个结果集、多个更新计数或二者组合,此方法通常只用于用户提供的交互式查询。(先放一放,还没用到)

executeQuery方法返回一个结果集ResultSet对象,

ResultSet
rs = stat.executeQuery(sql);

ResultSet类的迭代方法与java.util.Iterator接口稍有不同。对于ResultSet类,迭代器初始化时被设定在第一行之前的位置,必须调用next方法将它移动到第一行。另外,它没有hasNext方法,我们需要不断的调用next,直至该方法返回false。

对于返回的数据行,不同的数据类型有不同的访问器,每个访问器都有两种形式,一种接受数字参数,是指数字参数所对应的列;(与数组的索引不同,数据库的列序号是从1开始计算的)另一种使用字符串参数,是指结果集中以该字符串为列名的列。(列名是SQL的AS字句中指定的名,在没有使用AS时,它就是列名)使用数字参数效率更高一些,但是使用字符串参数可以使代码易于阅读和维护。

当get方法的类型和列的数据类型不一致时,每个get方法都会进行合理的类型装换。

每个Connection对象都可以创建一个或一个以上的Statement对象。同一个Statement对象可以用于多个不相关的命令和查询。但是,一个Statement对象最多只能打开一个结果集。如果要执行多个查询操作,且需要同时分析查询结果,那么就必须创建多个Statement对象。但实际上,我们通常并不需要同时处理多个结果集,如果结果集相互关联,我们就可以使用组合查询,这样就需要分析一个结果。对数据库使用组合查询比用java程序遍历多个结果集要高效率的多。

当使用完ResultSet、Statement和Connection对象时,应立即调用close方法。这些对象都使用了规模较大的数据结构,所以我们不应该等垃圾回收器来处理它们。关闭的原则,后打开的先关闭。(我们可以使用try/finally块关闭连接,而使用一个单独的try/catch块处理异常,分割try程序块可以提高代码的可读性和可维护性)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: