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

这篇博客主要介绍了如何使用JDBC执行SQL语句,包括Statement接口的executeQuery、executeUpdate方法及其应用场景。executeQuery用于SELECT查询,返回ResultSet对象;executeUpdate适用于INSERT、UPDATE、DELETE和DDL语句,返回更新计数。文章强调了合理使用Statement对象和及时关闭资源的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇我们得到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程序块可以提高代码的可读性和可维护性)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值