Java数据库连结技术JDBC

本文介绍了在JDBC中使用Statement、PreparedStatement及CallableStatement三种方式执行SQL查询的方法,包括创建对象、执行查询、设置选项及关闭对象等步骤。

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

2.2.2 执行查询语句
在JDBC中,查询可以使用不同的类来完成:Statement,PreparedStatement,或CallableStatement对象。当然,它们之间存在着一些不同之处。我们给出的例子中使用的是Statement类,其他两种我们将在后面做介绍。
1. Statement类
Statement 对象用于把 SQL 语句发送到 DBMS 。你只须简单地创建一个 Statement 对象并且执行它,使用适当的方法执行你发送的 SQL 语句。对 SELECT 语句来说,可以使用 executeQuery。要创建或修改表的语句,使用的方法是 executeUpdate。
Statement类主要用于一般SQL查询语句。其编程步骤如下:
(1)创建Statement 对象
Connection类的createStatement 方法用于建立一个Statement 对象。
Statement stmt = con.createStatement();
(2)执行查询语句
Statement类使用executeQuery方法来执行一查询语句。executeQuery的参数是用字符串类型表达的SELECT语句。它的返回值是一个ResultSet类的对象。例如:
String query = "SELECT * FROM books";
ResultSet r = stmt.executeQuery (query);
该语句将返回表books中的所有的记录。
又如:
ResultSet rs=stmt.executeQuery(“SELECT name, author FROM books WHERE price<20”);
返回表book中定价小于20元的书的name和author。
(3)获取和设置选项
对于Statement对象也可以设置许多选项,下面给出其中的两个。
1)SetMaxRows:设置容纳的最多记录数的选项,超过记录数的结果将被丢弃且不通知用户。它的参数是一个整型值。getMaxRows方法返回目前结果集能容纳的最多记录数。
2)GetQueryTimeOut:设置一个语句的执行等待时间,它的参数是以秒为单位的整型值。若驱动程序等待一个语句执行的时间超过了此值,则产生一个SQLExeption。getQueryTimeOut返回目前这个选项的值。
(4)关闭Statement
一个无用的Statement对象在垃圾回收时将会被自动关闭,但最好在使用完Statement对象后立即关闭。在关闭Statement对象时,如果其上还有结果集,该结果集也将被关闭。
stmt.close()。
2. PreparedStatement
Statement对象在每次执行SQL语句时,都要将该语句转给数据库,在多次执行同一语句时,这样做的效率较低。使用PreparedStatement类可以提高效率。
如果数据库支持预编译,它可以将SQL语句传给数据库做预编译,以后每次执行这个SQL语句时,速度就可以提高很多;如果数据库不支持预编译,则在语句执行时,才将其传给数据库。不过,数据库支不支持预编译对用户来说是透明的。
PreparedStatement对象的SQL语句还可以接受参数。在语句中指出需要接受哪些参数,然后进行预编译。在每一次执行时,可以给SQL语句传输不同的参数,这样就大大提高了程序的灵活性。
PreparedStatement类是Statement类派生出来的子类,因此,Statement类中的方法,它都可以使用。
(1)创建PreparedStatement对象
从一个Connection对象可以创建一个PreparedStatement对象。在创建时,应该给出要预编译的SQL语句。例如:
PreparedStatement stmt=con. prepareStatement(“SELECT * FROM books”);
对于接受参数的SQL语句,将在以后章节中讲述。
(2)执行查询语句
PreparedStatement对象也使用executeQuery方法来执行语句。需要注意,与Statement类不同的是该方法没有参数。这是由于创建PreparedStatement对象时,已经给出了要执行的SQL语句,并进行了预编译。执行时,只需要执行已编译好的语句就可以了。
ResultSet rs=pstmt.executeQuery();
上述语句可以被执行多次,无须重新给出SQL语句。同Statement类一样它返回一个ResultSet对象。对ResultSet的处理将在下一节中讲述。
PreparedStatement类也有一个不带参数的execute方法,用于可能返回多个ResultSet语句的执行。
(3)获取和设置选项
PreparedStatement类是使用它的父类Statement类的相应方法来获取和设置选项的,详见Statement类中关于“获取和设置选项”的叙述。
(4)关闭对象
PreparedStatement对象也是使用close()方法来关闭,实际上,它是使用父类Statement的close()方法。
3.CallableStatement
CallableStatement对象用于执行数据库中的存储过程。存储过程是数据库中已经存在的SQL查询语句。执行该存储过程的结果同执行相应的SQL语句是一样的。存储过程可以有输入参数,也可以有输出参数。
(1)创建CallableStatement对象
Connection类的PreparedCall方法可以创建一个CallableStatement对象。它的参数是一个String对象,一般格式为“{Call ProcedureName ()}”,其中ProcedureName是存储过程的名称。
(2)执行存储过程
CallableStatement类使用父类PreparedStatement类的executeQuery方法或execute 方法来执行存储过程的。例如:
ResultSet rs=cstmt.executeQuery();
对结果的处理方法也同PreparedStatement一样,将在下一节中讲述。
(3)获取和设置选项
CallableStatement 类是使用Statement类的相应方法来获取和设置选项的,详见Statement类中关于“获取和设置选项”的叙述。
(4)关闭CallableStatement
CallableStatement对象也是使用close()方法来关闭的,实际上,它使用的是父类Statement 的close()方法。 
资源下载链接为: https://pan.quark.cn/s/d9ef5828b597 四路20秒声光显示计分抢答器Multisim14仿真源文件+设计文档资料摘要 数字抢答器由主体电路与扩展电路组成。优先编码电路、锁存器、译码电路将参赛队的输入信号在显示器上输出;用控制电路和主持人开关启动报警电路,以上两部分组成主体电路。通过定时电路和译码电路将秒脉冲产生的信号在显示器上输出实现计时功能,构成扩展电路。经过布线、焊接、调试等工作后数字抢答器成形。关键字:开关阵列电路;触发锁存电路;解锁电路;编码电路;显示电路 一、设计目的 本设计是利用已学过的数电知识,设计的4人抢答器。(1)重温自己已学过的数电知识;(2)掌握数字集成电路的设计方法和原理;(3)通过完成该设计任务掌握实际问题的逻辑分析,学会对实际问题进行逻辑状态分配、化简;(4)掌握数字电路各部分电路与总体电路的设计、调试、模拟仿真方法。 二、整体设计 (一)设计任务与要求: 抢答器同时供4名选手或4个代表队比赛,分别用4个按钮S0 ~ S3表示。 设置一个系统清除和抢答控制开关S,该开关由主持人控制。 抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬声器发出报警声响提示。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。 参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。 如果定时时间已到,无人抢答,本次抢答无效。 (二)设计原理与参考电路 抢答器的组成框图如下图所示。它主要由开关阵列电路、触发锁存电路、解锁电路、编码电路和显示电路等几部分组成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值