




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基础知识简介数据库管理系统(DatabaseManagementSystem)是一种操纵和管理数据库的大型软件,是用于建立、使用和维护数据库,简称DBMS。用途:科学地组织和存储数据;高效地获取和维护数据。常见的数据库管理系统:
MicrosoftAccessOracleMicrosoftSQLServerVisualFoxPro;没有DBMS之前有了DBMS之后基础知识简介SQL语言:“结构化查询语言”StructuredQueryLanguageSQL语言的由来:最早的是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEMR开发的一种查询语言,它的前身是SQUARE语言。SQL语言的优点:结构简洁,功能强大,简单易学。SQL语言的地位:在关系型数据库中的地位犹如英语在世界上的地位,它是数据库系统的通用语言。利用SQL语言,用户可以用几乎同样的语句在不同的数据库管理系统上执行同样的操作。SQL已经被ANSI(美国国家标准化组织)确定为数据库系统的工业标准。
基础知识简介什么是ODBC?开放数据库互连(OpenDatabaseConnectivity)微软开放服务结构中有关数据库的一个组成部分ODBC有什么作用?建立了一组规范提供了一组对数据库访问的标准APIAPI:应用程序编程接口ODBC本身提供了对SQL语言的支持:用户可以直接将SQL语句送给ODBC。基础知识简介ODBC的最大优点:能以统一的方式处理所有的数据库。不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应DBMS的ODBC驱动程序完成;不论是FoxPro、Access、MYSQL还是Oracle数据库,均可用ODBCAPI进行访问。基础知识简介ODBC管理器的使用:首先必须用ODBC管理器注册一个数据源。数据源中包含数据库位置、数据库类型及ODBC驱动程序等信息。然后ODBC管理器根据上述信息,自动建立起ODBC与具体数据库的联系。只要应用程序将数据源名提供给ODBC,ODBC就能建立起与相应数据库的连接。JDBC简介什么是JDBC?Java数据库连接(JavaDataBaseConnectivity)Sun公司开发的一种用于执行SQL语句的JavaAPI由一组用Java语言编写的类和接口组成,可以为多种关系数据库提供统一访问通用性:只需用JDBCAPI编写一个程序,就可以向相应数据库发送SQL语句,进而访问多种不同的数据库ODBC与JDBC共同点:ODBC:微软公司开发的用于操作数据库的方法JDBC:Sun公司开发的用于操作数据库的方法不同点:ODBC支持的数据库类型多JDBC基于Java跨平台特性,可移植性好JDBC简介JDBC能哪完成3件事?与一个数据库建立连接。向数据库发送SQL语句。处理数据库返回的结果。与数据库建立连接的两种方式:建立JDBC-ODBC桥接器:加载纯Java数据库驱动程序JDBC简介1)建立JDBC-ODBC桥接器:由Sun公司本身开发出来的软件模块随着JDK的更新,它的各种操作的API都是最新的性能不高(通常在教学中使用)2)加载纯Java数据库驱动程序所有驱动程序由各个数据库生产厂商按照JDBC标准提供经常不支持最新版本的JDK性能较高(通常在软件开发中使用)JDBC简介使用JDBC-ODBC桥接器连接数据库的过程:1)创建一个数据库(Access)2)创建一个ODBC数据源,同数据库建立连接3)载入驱动程序,建立一个JDBC-ODBC桥接器4)创建链接(Connection)对象,连接到数据库5)创建语句(Statement)对象6)执行SQL语句,得到查询结果(ResultSet)7)对结果操作后,关闭连接JDBC-ODBC桥接器连接数据库
1.建立数据库使用Access创建一个数据库student.mdb
该库中有一个表,表的名字是“成绩表”;该表中number、name、birthday字段的属性是文本;math、english字段的属性是数字。关键字是number,见教材图15.1JDBC-ODBC桥接器连接数据库
2.创建一个ODBC数据源1)打开"数据源(ODBC)"管理器:打开控制面板,选择“性能和维护”→“管理工具”→“数据源(ODBC)”;或双击c:\windows\system32下的可执行文件“odbcad32”。此时会出现ODBC数据源管理器的对话框。JDBC-ODBC桥接器连接数据库
2.创建一个ODBC数据源2)添加数据源的驱动程序:在ODBC数据源管理器对话框中选择“用户DSN”然后单击“添加”按钮,将出现安装数据源的驱动程序对话框在选择列表中选择相应的驱动程序,在选好之后,单击“完成”按钮。JDBC-ODBC桥接器连接数据库
2.创建一个ODBC数据源3)创建数据源:完成上步操作后,系统将出现创建数据源对话框起名:为新建的数据源起一个名字;选择:为新建的数据源选择一个数据库;高级设置:设置登录名称和密码。JDBC-ODBC桥接器连接数据库
3.建立一个JDBC-ODBC桥接器Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")Class是包java.lang中的一个类;Class类通过调用静态方法forName加载sun.jdbc.odbc包中的JdbcOdbcDriver类来建立桥接器;建立桥接器时,可能会发生异常,需要捕捉(参见教材P393代码)JDBC常用类与接口使用包java.sql常用类与接口:
DriverManagerConnectionStatement
PreparedStatement
ResultSetJDBC-ODBC桥接器连接数据库
4.创建一个连接对象
Connectioncon=DriverManager.getConnection("URL","login
name","password");首先,使用java.sql包中的Connection类声明一个对象;然后,再使用类DriverManager调用其静态方法getConnection创建这样一个对象;URL:jdbc:odbc:数据源名字建立连接时,应捕捉SQLException异常;参见教材P393代码;Statementsql=con.createStatement();首先使用Statement声明一个SQL语句对象;通过刚刚创建的连接数据库的对象con调用方法createStatement()创建一个SQL语句对象;PreparedStatement
sql;
sql=con.prepareStatement("SQL语句");预编译处理后,生成该数据库底层的内部命令,并将该命令封装在PreparedStatement对象中JDBC-ODBC桥接器连接数据库
5.创建SQL语句对象
sql.executeUpdate(“SQL语句”);
UPDATEINSERTDELETEsql.executeQuery(“SQL语句”);由SELECT语句使用,将数据库查询结果存放在一个ResultSet类的对象里。JDBC-ODBC桥接器连接数据库
6.执行SQL语句,进行查询ResultSet对象:实际上是一个管式数据集,即统一形式的列组织的数据行组成;ResultSet对象一次只能看到一个数据行,使用next()方法走到下一个数据行;ResultSet对象调用方法getXxx(),传递参数“位置索引”或列名称,即可得到对应的字段值。注意:使用该方法时不可颠倒顺序!参见教材394页表15.1JDBC-ODBC桥接器连接数据库
6.执行SQL语句,进行查询JDBC-ODBC桥接器连接数据库
7.关闭数据库数据库每次使用后都必须关闭:关闭数据库的顺序与打开数据库的顺序相反1)先关闭结果集(ResultSet)2)再关闭操作(Statement)3)最后关闭连接(Connection)15.3顺序查询
使用结果集Result的next()方法,可以顺序的查询。一个结果集将游标最初定位在第一行的前面,第一次调用next()方法使游标移动到第一行。next()方法返回一个boolean型数据,当游标移动到最后一行之后返回false。
15.4可滚动结果集
为了得到一个可滚动的结果集,必须使用下述方法先获得一个Statement对象:Statementstmt=con.createStatement(inttype,intconcurrency);然后,根据参数的type、concurrency的取值情况,stmt返回相应类型的结果集:ResultSetre=stmt.executeQuery(SQL语句);type的取值决定滚动方式:ResultSet.TYPE_FORWORD_ONLY
结果集的游标只能向下滚动。ResultSet.TYPE_SCROLL_INSENSITIVE
结果集的游标可以上下移动,当数据库变化时,当前结果集不变。ResultSet.TYPE_SCROLL_SENSITIVE
返回可滚动的结果集,当数据库变化时,当前结果集同步改变。Concurrency取值决定是否可以用结果集更新数据库:ResultSet.CONCUR_READ_ONLY
不能用结果集更新数据库中的表。ResultSet.CONCUR_UPDATETABLE
能用结果集更新数据库中的表。滚动查询常用到的ResultSet的方法:参见教材P398previous()first()last()
beforeFirst()
afterlast()
getRow()
absolute(introw)15.5排序查询
可以在SQL语句中使用ORDERBY子语句,对记录排序。例如:按总成绩排序查询的SQL语句SELECT*FROMstudentORDERBYmath+english升序:ASC(默认)降序:DESC参见教材P399例题15.415.6模糊查询
可以用SQL语句操作符LIKE进行模式般配:使用“%”代替0个或多个字符;用一个下划线“_”代替1个字符;比如,下述语句查询姓氏是“王”的记录:rs=sql.executeQuery("SELECT*FROMstudentsWHEREnameLIKE‘王%’");参见教材P400例题15.5课堂实验:编写登陆窗口类LoginFrame(如下图所示),用于输入用户名和密码。编写数据库查询类DataOperation,该类包含静态方法isLogin,用于查询数据库判断登陆用户是否存在。15.7随机查询
用Math类的静态方法random()可以产生一个大于0小于1的随机数。使用下述公式:
inti=(int)(Math.random()*number);
可以产生一个0到number之间的随机数。根据这个随机数,将游标移动到相应的行,并输出该行记录。参见教材P401例题15.615.8更新、添加、删除记录
使用SQL语句更新记录中字段的值Statement对象调用方法:
publicint
executeUpdate(String
sqlStatement);
通过参数sqlStatement指定的方式实现对数据库表中记录的字段值的更新。SQL更新操作常用命令:
UPDATEINSERTDELETESQL更新操作常用命令:UPDATE:UPDATEScoreTable
SETmath=88WHEREname='钱二'INSERT:INSERTINTOScoreTable
VALUES('2005008','1989-12-02','刘明明',70,95)DELETE:DELETEFROMScoreTable
WHEREnumber='2003004'课堂练习:编写程序,完成如下数据库操作:将"钱大能"的英文成绩改为66分;插入记录('2005006','李向阳','1934-12-02',96,91)删除学号为'2003002'的学生的信息记录课堂练习:编写一个"学生成绩查询系统":15.9预处理语句
当向数据库发送一个SQL语句后,比如:“Select*Fromchengjibiao”首先,数据库库中的SQL解释器负责将把SQL语句生成底层的内部命令然后,执行该命令,完成有关的数据操作。潜在的问题:如果应用程序不断地向数据库提交SQL语句,势必会增加数据库中SQL解释器的负担,影响执行的速度。15.9预处理语句
预处理:首先,应用程序针对连接的数据库,事先将SQL语句解释为数据库底层的内部命令;然后,直接让数据库去执行这个命令。优点:不仅减轻了数据库的负担;而且也提高了访问数据库的速度。对于JDBC,如果使用Connection和某个数据库建立了连接对象con,那么con就可以调用prepareStatement(String
sql)
方法对SQL语句进行预编译处理;预编译处理后,会生成该数据库底层的内部命令,并将该命令封装在PreparedStatement对象中;那么该对象调用下列方法,都可以使得该底层的内部命令被数据库执行:execute();executeQuery();executeUpdate()15.9预处理语句
PreparedStatement对象可调用的方法:execute():可执行SQL任何命令executeQuery():执行查询命令executeUpdate():执行更新、插入或删除命令只要编译好了PrepareedStatement对象,那么该对象可以随时的执行上述方法,显然提高了访问数据库的速度15.9预处理语句
参见教材P401例题15.6con=DriverManager.getConne
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 全方位备考2024人力资源管理师试题及答案
- 超星尔雅学习通《批判与创意思考(大连理工大学)》2025章节测试附答案
- 蓝图:健康管理师的未来建议试题及答案
- 注册工程师施工技术分析试题及答案
- 二零二五年度油气合资经营合同范本
- 2025年度车辆事故处理与道路交通事故调查服务合同
- 二零二五年度智能办公楼交房后物业费及商务服务合同
- 二零二五年度学位论文保密协议及技术秘密共享合同
- 2025年度钢材行业市场调研与销售策略合同
- 二零二五劳务安全协议书:华区制造业工人安全防护及职业健康协议
- 中等职业学校化学工艺专业实训教学条件建设标准
- DB11T 1076-2023 居住建筑装饰装修工程质量验收标准
- 工科中的设计思维学习通超星期末考试答案章节答案2024年
- 八年级道德与法治说课稿省公开课获奖课件说课比赛一等奖课件
- 2025高考语文文言文阅读复习:高频实词分类汇编
- 小个体劳务合同范本
- JBT 14585-2024 信号蝶阀(正式版)
- 文具店合作意向协议书
- 中国神话故事绘本火神祝融
- 五星级酒店前厅管理常用表格
- 《养老护理员》-课件:老年人安全防范及相关知识
评论
0/150
提交评论