Java数据库连接.ppt

上传人:小飞机 文档编号:5436098 上传时间:2023-07-06 格式:PPT 页数:49 大小:214.99KB
返回 下载 相关 举报
Java数据库连接.ppt_第1页
第1页 / 共49页
Java数据库连接.ppt_第2页
第2页 / 共49页
Java数据库连接.ppt_第3页
第3页 / 共49页
Java数据库连接.ppt_第4页
第4页 / 共49页
Java数据库连接.ppt_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《Java数据库连接.ppt》由会员分享,可在线阅读,更多相关《Java数据库连接.ppt(49页珍藏版)》请在三一办公上搜索。

1、第15章 Java数据库连接,15.1 创建数据源15.2 JDBC-ODBC桥接器15.3 顺序查询15.4 可滚动结果集15.5 排序查询15.6 模糊查询15.7 随机查询15.8 更新、添加、删除记录15.9 预处理语句15.10 数据库访问中的套接字技术,第15章 Java数据库连接,教学目的:学习在JAVA中如何建立数据源,学习对数据源的访问,对数据内容的查询及更改等基本操作。,第15章 Java数据库连接,教学内容:1、JDBC与数据库概述 2、访问数据库3、数据库查询4、更新、添加、删除记录5、JDBC事务支持 重点难点内容:数据库的建立以及内容的查询。,补充:基本概念,一、关

2、系数据库中的基本概念:数据库:是应用程序要通过关系数据库管理系统进行管理的数据的总称,通常由多个相互之间存在各种关系的数据表构成。数据表数据记录数据字段主码外码,补充:基本概念,二、SQL简介 SQL最初是IBM公司为关系数据库管理系统System R设计的查询语言,1986年美国国家标准局的数据库委员会X3H2批准了它作为关系数据库语言的美国标准。此后不久,国际标准化组织ISO也将其作为关系数据库语言的国际标准。,补充:基本概念,SQL基本语句有下列几种:1、查询语句SELECT DISTINCTWHERE例:SELECT*FROM personSELECT id,name,sex,birt

3、hday FROM person,补充:基本概念,SELECT*FROM person WHERE name LIKE 李%2、插入语句INSERT INTO(VALUES例 INSERT INTO person(id,name,sex,)VALUES(CLINT,张三,男)3、修改语句UPDATE SET 字段=字段值,字段=字段值 WHERE,补充:基本概念,三、JDBC介绍JDBC(Java DataBase Connection)是Java数据库连接API。简单地说,JDBC能完成3件事:与一个数据库建立连接。向数据库发送SQL语句。处理数据库返回的结果。,补充:基本概念,四、JDBC

4、常用类与方法 1、DriverManager类:负责管理JDBC驱动程序。使用JDBC驱动程序之前,必须先将驱动程序加载并向DriverManager注册后才可以使用,同时提供方法来建立与数据库的连接。方法:1)Class.forName(Stringdriver);/加载注册驱动程序,补充:基本概念,2)staticConnectiongetConnection(Stringurl,Stringuser,Stringpassword)throws SQLException;/取得对数据库的连接。3)StaticDrivergetDriver(Stringurl)throws SQLExcet

5、ion;/在已经向DriverManager注册的/驱动程序中寻找一个能够打开url所指定的数据库/的驱动程序。,补充:基本概念,2、Connection类负责维护JSP/JAVA数据库程序和数据库之间的联机。可以建立三个非常有用的类对象。常用方法如下:StatementcreateStatement()throws SQLException;/建立Statement类对象statementcreateStatement(intresultSetType,intresultSetConcurrency)throwsSQLException;/建立Statement类对象,补充:基本概念,res

6、ultSetType的取值如下:1)TYPE_FORWARD_ONLY结果集不可滚动。2)TYPE_SCROLL_INSENSITIVE结果集可滚动,不反映数据库的变化。3)TYPE_SCROLL_SENSITIVE结果集可滚动,反映数据库的变化。4)resultSetConcurrency值。5)CONCUR_READ_ONLY不能用结果集更新数据。6)CONCUR_UPDATABLE能用结果集更新数据。,补充:基本概念,DatabaseMetaDatagetMetaData()throwsSQLException;/建立DatabaseMetaData类对象 PreparedStateme

7、ntprepareStatement(Stringsql)throwsSQLException;/建立PreparedStatement类对象 booleangetAutoCommit()throws SQLException/返回Connection类对象的 AutoCommit状态,补充:基本概念,voidclose()throwsSQLException/结束Connection对象对数据库的联机。booleanisClosed()throwsSQLException/测试是否已经关闭Connection类对象对数据库的联机。,补充:基本概念,3、Statement类通过Statemen

8、t类所提供的方法,可以利用标准的SQL命令,对数据库直接新增、删除或修改操作方法:1)ResultSetexecuteQuery(Stringsql)throwsSQLException/使用SELECT命令对数据库进行查询,补充:基本概念,2)intexecuteUpdate(Stringsql)throwsSQLException/使用INSERTDELETEUPDATE对数据库进行新增、删除和修改操作。3)voidclose()throwsSQLException/结束Statement类对象对数据库的联机。,补充:基本概念,4、PreparedStatement类 PreparedSt

9、atement类和Statement类的不同之处在于PreparedStatement类对象会将传入的SQL命令事先编好等待使用,当有单一的SQL指令比多次执行时,用PreparedStatement类会比Statement类有效率常用方法如下:1)ResultSetexecuteQuery()throwsSQLException/使用SELECT命令对数据库进行查询。,补充:基本概念,2)intexecuteUpdate()throwsSQLException/使用INSERTDELETEUPDATE对数据库进行新增、删除和修改操作。3)voidsetInt(intparameterInde

10、x,intx)throwsSQLException/设定整数类型数值给PreparedStatement类对象的IN参数。,补充:基本概念,4)voidsetFloat(intparameterIndex,floatx)throwsSQLException/设定浮点数类型数值给PreparedStatement类/对象的IN参数。5)voidsetNull(intparameterIndex,intsqlTypthrowsSQLException/设定NULL类型数值给PreparedStatement类/对象的IN参数。,补充:基本概念,6)voidsetString(intparamete

11、rIndex,Stringx)throwsSQLException/设定字符串类型数值给PreparedStatement类/对象的IN参数。7)voidsetDate(intparameterIndex,Datex)throwsSQLException/设定日期类型数值给PreparedStatement类对/象的IN参数。,补充:基本概念,8)voidsetTime(intparameterIndex,Timex)throwsSQLException/设定时间类型数值给PreparedStatement类对象的IN参数。,补充:基本概念,5、ResultSet类负责存储查询数据库的结果。并

12、提供一系列的方法对数据库进行新增、删除和修改操作。也负责维护一个记录指针(Cursor),记录指针指向数据表中的某个记录,通过适当的移动记录指针,可以随心所欲的存取数据库,加强程序的效率。方法如下:1)booleanabsolute(introw)throwsSQLException/移动记录指针到指定的记录。,补充:基本概念,2)voidbeforeFirst()throwsSQLException/移动记录指针到第一笔记录之前。3)voidafterLast()throwsSQLException/移动记录指针到最后一笔记录之后。4)booleanfirst()throwsSQLExcep

13、tion/移动记录指针到第一笔记录。5)booleanlast()throwsSQLException/移动记录指针到最后一笔记录。,补充:基本概念,6)booleannext()throwsSQLException/移动记录指针到下一笔记录。7)booleanprevious()throwsSQLException/移动记录指针到上一笔记录。,补充:基本概念,五、数据库访问过程 一个简单的数据库查询包括如下步骤:载入JDBC数据库驱动程序,建立与数据库的连接,在建立数据库连接的前提下执行SQL语句,取结果集和结果信息,提交事务,关闭数据库。如果是更新操作,则执行SQL语句后没有结果集。,补充

14、:基本概念,1、JDBCODBC访问的流程 JDBC Driver Mannager-JDBCODBC桥-ODBC-数据库客户机驱动库-数据库服务器-返回查询结果,在这种访问中值的我们注意的是虽然JAVA是“Write Once,Run Anywhere”,但是如果通过这种访问的话,需要客户端必须设置ODBC和有相应的数据库客户机的驱动。由于不是所有的数据库服务器提供商都提供JDBC驱动程序(给JDBC访问提供相应的接口),所以就有了JDBCODBC Bridge。,补充:基本概念,2、JDBC驱动返回查询结果 JDBC Driver Mannager-局部JDBC驱动-客户端数据库-数据库服

15、务JDBC驱动返回查询结果器-返回查询结果,这种访问事实上是转换JDBC调用为相应的数据库(Oracle,Sybase,Informix,DB2,和其他的数据库数据库管理系统)的客户端API调用,这种方式的访问需要相应的数据库提供商提供相应的JDBC驱动程序,但是有一种好处,可以独立于odbc用于可以随处可Run的客户端的浏览器中的Applet程序。,补充:基本概念,3、连接数据库 JDBC URL语法:jdbc:如:jdbc:odbc:studentdb,jdbc:dbpro:stujdbc:odbc/:5000/stu建立连接”);String url=“jdbc:odbc:student

16、db”;Connection con=DriverManager.getConnection(url,”user”,”pass”);,补充:基本概念,4、了解数据库信息 可以通过取得DatabaseMetaData对象来了解数据源的信息:DatabaseMetaData bma=con.gtMetaData();DatabaseMetaData对象有很多方法取得数据库的基本信息(方法如下)getURL,getUserName(),getDatabaseProduceName(),getDatabaseProduceVersion(),isReadOnly(),getDriverName(),g

17、etDriverVersion(),getTabels(),getColumns(),getIndexInfo()。,补充:基本概念,六、数据库查询 所有SQL语句都是通过Statement或其子类(PreparedStatement,CallableStatement)的对象实现。1、Statement Statement用于一般SQL查询语句的执行 1)创建:Connection对象的createStatement方法可以创建Statement对象如:Statement stmt=con.createStatement();,补充:基本概念,2)执行方法如下:executeQuery,ex

18、ecuteUpdate,execute具体使用如下:String tsql=“select name,age from table1”;ResultSet rs=stmt.executeQuery(tsql);非select语句如:int nRet=stmt.executeUpdate(tsql);execute方法用于:返回多个结果集。3)关闭:close stmt.close();,补充:基本概念,2、PreparedStatement 通过PreparedStatement可以将SQL语句预编译,还可以内嵌参数进行预编译具体使用如下:String tsql=“Select*from ta

19、ble1 where id=”+nID+”and name=”+strName+”;或:PreparedStatement ps=con.preparedStatement(“delete from table1 where id=?And name=?”);ps.setInt(1,nID);ps.setString(2,strName);ps.executeUpdate();,补充:基本概念,七、读取结果集中的数据 可以通过ResultSet类来查询结果集中的数据。如方法:next,getXXX(XXX为各种类型)等,使用如下:ResultSet rs=st.executeQuery(“Se

20、lect*from table1”);while(rs.next()rs.getInt,rs.getString,15.1 创建数据源,为了同数据库建立连接,首先要创建一个ODBC数据源。打开Windows中的控制面,对于WindowXP,选择“性能和维护”“管理工具”“数据源(ODBC)”;对于Window2000,选择“管理工具”“数据源(ODBC)”;对于Window9X,选择“数据源(ODBC)”。也可以使用“资源管理器”双击c:windowssystem32下的可执行文件“odbcad32”打开“数据源(ODBC)”。,15.1 创建数据源,建立数据源的步骤:打开“数据源(ODBC)

21、”将出现ODBC数据源管理器对话框 在ODBC数据源管理器对话框中选择“用户DSN”,然后单击“添加”按钮,将出现安装数据源的驱动程序对话框,可以在选择列表中选择相应的驱动程序。在选择驱动程序对话框选择好驱动程序后,单击“完成”按钮,将出现创建数据源对话框,。在该对话框中,你需要为创建的数据源起一个名称,并为你创建的数据源选择一个数据库。,15.2 JDBC-ODBC桥接器,1、建立一个JDBC-ODBC桥接器 为了要连接到这个数据库,我们首先要建立一个JDBC-ODBC桥接器:.JdbcOdbcDriver);,15.2 JDBC-ODBC桥接器,2、连接到数据库Connection con

22、=DriverManager.getConnection(jdbc:odbc:数据源名字,login name,password);3、发送SQL语句 Statement sql=con.createStatement();4、处理查询结果ResultSet rs=sql.executeQuery(“SQL语句);,15.3 顺序查询,使用结果集Result的next()方法,可以顺序的查询。一个结果集将游标最初定位在第一行的前面,第一次调用next()方法使游标移动到第一行。next()方法返回一个boolean型数据,当游标移动到最后一行之后返回false。,15.4 可滚动结果集,1、要

23、得到一个可滚动的结果集,必须首先使用下述方法先获得一个Statement对象:Statement stmt=con.createStatement(int type,int concurrency);2、再根据参数的type、concurrency的取值情况,stmt返回相应类型的结果集:ResultSet re=stmt.executeQuery(SQL语句);,15.4 可滚动结果集,3、type的取值决定滚动方式,取值情况如下:ResultSet.TYPE_FORWORD_ONLY 结果集的游标只能向下滚动。ResultSet.TYPE_SCROLL_INSENSITIVE 结果集的游标

24、可以上下移动,当数据库变化时,当前结果集不变。ResultSet.TYPE_SCROLL_SENSITIVE 返回可滚动的结果集,当数据库变化时,当前结果集同步改变。,15.4 可滚动结果集,4、Concurrency 取值决定是否可以用结果集更新数据库,Concurrency取值:ResultSet.CONCUR_READ_ONLY 不能用结果集更新数据库中的表。ResultSet.CONCUR_UPDATETABLE 能用结果集更新数据库中的表。,15.5 排序查询,可以在SQL语句中使用ORDER BY子语句,对记录排序。,15.6 模糊查询,可以用SQL语句操作符LIKE进行模式般配,

25、使用“%”代替0个或多个字符,用一个下划线“_”代替1个字符。比如,下述语句查询姓氏是“王”的记录:rs=sql.executeQuery(SELECT*FROM students WHERE 姓名 LIKE 王%);,15.7 随机查询,用Math类的静态方法random()可以产生一个大于0小于1的随机数,再用下述公式:int i=(int)(Math.random()*number);产生一个0到number之间的随机数,根据这个随机数将游标移动到相应的行,并输出该行记录。,15.8 更新、添加、删除记录,使用SQL语句更新记录中字段的值Statement对象调用方法:public in

26、t executeUpdate(String sqlStatement);通过参数sqlStatement指定的方式实现对数据库表中记录的字段值的更新。,15.9 预处理语句,当向数据库发送一个SQL语句,比如“Select*From chengjibiao”,数据库库中的SQL解释器负责将把SQL语句生成地层的内部命令,然后执行该命令,完成有关的数据操作。如果不断地向数据库提交SQL语句势必增加数据库中SQL解释器的负担,影响执行的速度。如果应用程序能针对连接的数据库,事先就将SQL语句解释为数据库地层的内部命令,然后直接让数据库去执行这个命令,显然不仅减轻了数据库的负担,而且也提高了访问数据库的速度。,15.9 预处理语句,对于JDBC,如果使用Connection和某个数据库建立了连接对象con,那么 con就可以调用 prepareStatement(String sql)方法对SQL语句进行预编译处理,生成该数据库地层的内部命令,并将该命令封装在PreparedStatement对象中,那么该对象调用相应的方法都可以使得该地层的内部命令被数据库执行。,15.10 数据库访问中的套接字技术,利用套接字连接向服务器发送一个查询的条件,而服务器负责对数据库的查询,然后服务器再将查询的结果利用建立的套接字返回给客户端。,课后习题:P411 1,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号