数据库系统应用与开发--实验二

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二JDBC基础(1 )

、相关知识点

1、JDBC基本概念

2、java连接数据库的方式

3、JDBC简单查询

二、实验目的:

理解Java连接数据库的基本概念。理解JDBC的四种驱动程序,掌握纯java驱动和jdbc-odbc 驱动。理解Statement 对象和ResultSet 对象。

、实验内容:

1、将booklib应用的JDBC驱动程序改成JDBC-ODBC驱动方式。

第一步:设置ODBC数据源;

选择您想为耳安装数据源的驱动程序

名称

PB EATADIRECT 5.00 Oraclt

?B EiTABIRECT OEM 5.00 Oracle Wire Protocol

?B BKTAIIRECT OEM 5.00 TaradoxFile (*. db)

?B 11ATKDIRECT OEM 5. 00 Progress

PB BATABIRECT 0£H 5.00 Fraeress SQL92

FB EATADIRECT OEM 5.00 SQL Server Wire Prot

FB DATAIIRECT OEM 5.00 Sybase Vire Protocol PB EATATIRECT OEM 5.00 TextFile (#.r)

SQL Native Cli ant

落QL Server

崭I Jj

〈上一步匹| 咸取消 |

第二步:修改DBUtil类中的相关代码;

第三步:运行程序

【实验结果与分析】

A、说明需要修改DBUtil类的哪些地方,及修改原因?

private static final Stri ng jdbcUrl ="jdbc:odbc:cjeSQL"

因为booklib应用的驱动方式是jdbc-odbc驱动

2、利用Statement对象和Result对象实现按出版社名称精确查询出版社功能(精确查询是指查询的目标和

查询条件中值完全相同的数据) 。

第一步:在.zucc.booklib.control. PublisherManager 类中添加按出版社名称精确查询方法public Bea nPublisher loadPubByName(Stri ng n ame)throws BaseExcepti on 第二步:编写上述方法,要求当相应名字的出版社不存在时,返回null值;相关代码请参考提取所有出版社函数。

第三步:启动booklib主程序,在出版社管理中录入几个出版社

第四步:清空.zucc.booklib.control. PublisherManager 类中的main 函数现有内容

第五步:在main函数中编写代码,通过调用上面实现的方法按出版社名字查询出版社,如果返回null,则在控制台输出“没有找到出版社”,否则输出出版社编号。(注: 控制台输出通过System.out.println(…)函数实现,函数调用的方法参考现有main函数

中的内容)。要求main函数中调用两次上述函数,参数分别为一个确实存在的出版社,一个不存在的出版社。

第六步:以java application模式运行PublisherManager类,查看输出内容。

【实验结果与分析】

A 、

请给出查询函数的代码。 public ListvBea “Publisher 〉loadPubByName(Str ing n ame) throws

BaseExcepti on{

List

new ArrayList(); n ull ;

getC onn ecti on ();

"select pubid,publisherName,address from Bea “Publisher where publisherName = 'n ame'"

java.sql.Stateme nt st=c onn. createStateme nt(); java.sql.ResultSet

rs=st.executeQuery(sql); while (rs. next()){

Bea “Publisher p= new Bea nPublisher();

p.setPubid(rs.getStri ng(1)); p.setPublisherName(rs.getStri ng(2));

p.setAddress(rs.getStri ng(3));

result.add(p);

}

} catch (SQLException e) {

e.pri ntStackTrace();

throw new DbExcepti on( e);

finally {

if (conn!= null )

try { conn.close();

Conn ecti on

conn= try {

conn=DBUtil. String sql=

} catch (SQLException e) {

// TODO Auto-generated catch block e.printStackTrace();

}

}

return result;

}

}

B、说明如何通过JDBC API 判断没有查询到指定名字的出版社。

传递一个Driver 给DriverManager ,加载数据库驱动 (通知jvm 将驱动程序相关的类加载到内存中) 。

Class.forName()

通过URL 得到一个Connection 对象, 建立数据库连接DriverManager.getConnection(sDBUrl) DriverManager.getConnection(sDBUrl,sDBUserID,sDBPassword)

然后创建一个Statement对象(PreparedStatement或CallableStatement),用来查询或者修改数据库。

Statement stmt=con.createStatement()

查询返回一个ResultSet。

ResultSet rs=stmt.executeQuery(sSQL

3、利用Statement对象和Result对象实现按出版社名称模糊查询出版社功能(模糊查询是指查询的目标包

含输入的条件) 。

第一步:在.zucc.booklib.control. PublisherManager 类中添加按出版社名称精确查询方法public List searchPubsByName(String name)throws BaseException 第二步:编写上述方法,相关代码请参考提取所有出版社函数。

第三步:清空.zucc.booklib.control. PublisherManager 类中的main 函数现有内容

第四步:在main 函数中编写代码,通过调用上面实现的方法按出版社名字模糊查询出版社,并输出查询到的出版社信息。

第六步:以java application 模式运行PublisherManager 类,查看输出内容。【实验结果与分析】

A、请给出查询函数的代码。

public List loadPubByName(String name) throws BaseException{

List result= new ArrayList(); Connection conn= null ;

try {

conn=DBUtil. getConnection ();

String sql= "select pubid,publisherName,address from

BeanPublisher where publisherName like '%" +name+ "%'" ;

java.sql.Statement st=conn.createStatement();

java.sql.ResultSet rs=st.executeQuery(sql);

while (rs.next()){

BeanPublisher p= new BeanPublisher(); p.setPubid(rs.getString(1));

p.setPublisherName(rs.getString(2)); p.setAddress(rs.getString(3));

result.add(p);

相关文档
最新文档