版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,第11章 Java的数据库编程,2,主要内容,关系型数据库概述 JDBC简介 JDBC的使用,3,11.1数据库概念,数据库数据的集合,它由一个或多个表组成。每一个表中都存储了对一类对象的数据描述 关系数据库将数据表示为表的集合,通过建立简单表之间的关系来定义结构的一种数据库,4,11.1.1关系型数据库,一个关系数据库基本上包括一系列相互关连的表,在每一个表中存有一类与应用系统相关的数据。例如一个学生管理的数据库中,可能有关于学生学号、姓名、住址、电话号码以及系别等方面的表,5,11.1.2 SQL语言,SQL(Sequence Query Language,结构化查询语言)是操纵数据库
2、的标准语言。 非过程化语言:SQL是一种非过程化语言,它一次处理的是一个记录集合,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作。SQL不要求用户指定对数据的存取方法,SQL语句使用查询优化器,由系统决定对指定数据存取的最快速手段。当关系的设计者在关系表上定义了索引,系统会自动地利用索引进行快速检索,用户不需知道表上是否有索引、表有什么类型的索引等细节。,6,统一语言:统一语言 SQL可用于所有用户的数据库活动类型,包括数据库系统管理员、程序员等,它操作简单,使用方便。 关系数据库的公共语言:用户可将使用SQL的技能从一个RDBMS很容易地转到另一个系统,所有
3、用SQL语言写的程序都具有可移植性。,7,常用SQL语句(1),创建表 CREATE TABLE STUDENT( studentno CHAR(8) NOT NULL, firstname CHAR(10) NOT NULL, lastname CHAR(10) NOT NULL, birthday DATE, gender CHAR(1) DEFAULT M );,8,常用SQL语句(2),插入数据 当一个表新建成时,它里面没有数据,通过向表中插入数据,建成表的实例。 语句句法: INSERT INTO 表名(列名1,) VALUES(值1,值2,,值n) 子查询; 将新学生刘备增加到St
4、udent表中,并按照表的结构将信息添加完整,需要如下语句: INSERT INTO STUDENT VALUES(020005, 聪,何,1982-2-23,M);,9,常用SQL语句(3),修改数据 对表中已有数据进行修改,语句句法: UPDATE 表名 SET 列名1表达式1,列名2表达式2, WHERE 条件; 例如,将学号为021010的名字改为宇飞,应该执行以下语句: UPDATE STUDENT SET firstname=宇文 WHERE StudentNO=021010;,10,常用SQL语句(4),删除数据 删除表中已经存在的数据,注意:不能删除不存在的数据。 语句句法:
5、DELETE FROM 表名 WHERE 条件; 例如:对Student表进行删除,要删除其中学号为021111的学生; DELETE FROM STUDENT WHERE Studentno021111;,11,常用SQL语句(5),查询语句 1.查询学号为021900的学生: SELECT * FROM STUDENT WHERE StudentNo=021900; 2.查询所有姓名以A开头的学生的姓名; SELECT STUDENT.FirstName, STUDENT.LastName FROM STUDENT WHERE LastName LIKE A%; 3.将所有学生按学号顺序升
6、序排列; SELECT * FROM STUDENT ORDER BY StudentNo DESC; 4.将所有学生按学号顺序升序排列; SELECT * FROM STUDENT ORDER BY StudentNo ASC;,12,11.2 JDBC,JDBC (Java DataBase Connectivity)是用于执行SQL语句的Java应用程序接口,由一组用Java语言编写的类与接口组成。 JDBC是一种规范,它让各数据库厂商为Java程序员提供标准的数据库访问类和接口,这样就使得独立于DBMS的Java应用程序的开发工具和产品成为可能。,13,11.3 JDBC的主要接口,1
7、1.3.1数据库驱动相关的接口定义1、java.sql.Driver,14,2、java.sql.DriverManager,15,11.3.2数据库连接接口定义java.sql.Connection,16,11.3.3查询和结果表示接口定义1、java.sql.Statement,17,2、java.sql.ResultSet,18,11.4 JDBC 的应用,JDBC和JDBC/ODBC解决方案,19,ODBC,ODBC,是开放式数据库互连(Open Database Connectivity)的缩写 这是一组API。它主要与数据库打交道。就是说,利用ODBC API,你可通过统一界面和各
8、种数据库打交道。 通过ODBC访问数据库由四个组成部分: 应用程序(Application,你的程序) ODBC 管理器(ODBC manager) ODBC 驱动程序(ODBC Drivers) 数据源(Data Sources,数据库) 访问数据库的模式 你的程序 ODBC管理器 ODBC驱动程序 数据库,20,11.4.1 ODBC的设置,在Windows资源管理器控制面板管理工具ODBC数据源(可能操作系统的不同会有差别)。然后单击用户DSN页。在这里,可以选择一个已经存在的数据源对它进行修改,或者添加一个新的。这里选择添加。,21,ODBC的设置(2),接下来,系统会提示选择驱动程序
9、,采用Microsoft Access Driver,也可以根据具体的条件选择。,22,ODBC的设置(3),安装一个ODBC数据源,23,ODBC的设置(4),如果新建数据源,就要选择具体数据库的位置。如果在前一步选择已经存在的数据源,则可以在这里对它进行重新选取数据库,修复,压缩等操作。同时还可以通过高级选项来定义用户名,密码等。,24,ODBC的设置(5),定义新建数据源的名字,对新建数据源进行描述 。至此,我们已经完成了用户DSN的设置,在用户DSN里面多了一个名为javadb的数据源。,25,11.4.2 JDBC的使用,1、装载驱动程序 装载驱动程序只需要非常简单的一行代码。如果想
10、要使用JDBC/ODBC桥驱动程序,可以用下列代码装载它: Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); 2、建立连接 第二步就是用适当的Driver类与DBMS建立一个连接。下列代码是一般的做法: Connection con = DriverManager.getConnection(url, Login, Password);,26,3、查询数据库,为了下面的演示,我们使用Microsoft Access编辑刚刚建立的数据源javadb.使用设计向导创建一个名为student的表接着输入一些测试数据。,27,JDBC示例代码,public cl
11、ass JDBCDemo public static void main(String args) String driverClass = sun.jdbc.odbc.JdbcOdbcDriver; String url = jdbc:odbc:javadb; String columnNames = new Stringstudentno, lastname, firstname, gender, birthday; String displayNames = new String学号, 姓, 名, 性别, 生日; try /加载驱动程序 Class.forName(driverClass
12、); catch (ClassNotFoundException e) /驱动程序加载不成功,打印错误信息并退出 System.out.println(Can not find driver + driverClass); System.exit(-1); Connection con;,28,JDBC示例代码(2),try /获得jdbc 连接 con = DriverManager.getConnection(url); /创建Statement对象 Statement stmt = con.createStatement(); /得到查询结果集 ResultSet rs = stmt.e
13、xecuteQuery(select * from student); /打印表头 for (int i = 0; i displayNames.length; i+) System.out.print(displayNamesi + t); System.out.println(); /列印结果集 while (rs.next() for (int i = 0; i columnNames.length; i+) System.out.print(rs.getString(columnNamesi) + t); System.out.println(); stmt.close();,29,J
14、DBC示例代码(3), catch (SQLException sqe) sqe.printStackTrace(); finally /关闭数据库连接 try con.close(); catch (Exception e) ,30,编写JDBC程序一般步骤,加载驱动程序 Class.forName(driverClass); 获得jdbc 连接 Connection con = DriverManager.getConnection(url); 创建Statement对象 Statement stmt = con.createStatement(); 得到查询结果集或者执行update等操
15、作 ResultSet rs = stmt.executeQuery(select * from student); 关闭数据库连接 try con.close(); catch (Exception e) ,31,查询数据库,import java.sql.*; class Query public static void main(String args) try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch(ClassNotFoundException e) System.out.println(SQLException:+e.ge
16、tMessage(); tryConnection con=DriverManager.getConnection(jdbc:odbc:myDB1,yao,123456); Statement stmt=con.createStatement(); ResultSet rs=stmt.executeQuery(select *from employee); while(rs.next() System.out.println( 编号:+rs.getString(1)+t+ 姓名:+rs.getString(2)+t+ 性别:+rs.getString(3)+t+ 工资:+rs.getStrin
17、g(4); rs.close(); stmt.close(); catch(SQLException e) System.out.println(SQLException:+e.getMessage(); ,32,运行结果,33,插入记录,Connection con=DriverManager.getConnection(jdbc:odbc:myDB1,yao,123456); Statement stmt=con.createStatement(); String sqlstr=insert into employee values(6001,张兵,男,2400); stmt.execut
18、eUpdate(sqlstr); stmt.executeUpdate(insert into employee values(7001,李红,女,2500);,34,import java.sql.*; class Insert1 public static void main(String args) try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch(ClassNotFoundException e) System.out.println(SQLException:+e.getMessage(); try Connection c
19、on=DriverManager.getConnection(jdbc:odbc:myDB1,yao,123456); Statement stmt=con.createStatement(); String sqlstr=insert into employee values(6001,张兵,男,2400); stmt.executeUpdate(sqlstr); stmt.executeUpdate(insert into employee values(7001,李红,女,2500); stmt.close(); con.close(); catch(SQLException e) Sy
20、stem.out.println(SQLException:+e.getMessage(); ,35,修改记录,Connection con=DriverManager.getConnection(jdbc:odbc:myDB1,yao,123456); Statement stmt=con.createStatement(); String sql=update employee set no=3101 +where name=张兵; stmt.executeUpdate(sql); sql=update employee set salary=2500 where no=2001; stm
21、t.executeUpdate(sql);,36,删除记录,Connection con=DriverManager.getConnection(jdbc:odbc:myDB1,yao,123456); Statement stmt=con.createStatement(); String sql=delete from employee where no=3101; stmt.executeUpdate(sql); stmt.close();,37,建立表,Connection con=DriverManager.getConnection(jdbc:odbc:myDB1,yao,123456); Statement stmt=con.createStatement(); String sql=Create table student(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年小学艺术课程与教学设计
- 农田水利高效节水灌溉施工方案及技术措施
- 2025-2026学年小班数学物品分类教案
- 2025-2026学年湘鲁版小学英语教学设计
- 4.2 携手促发展 教学设计 - 统编版道德与法治九年级下册
- 文物建筑白蚁防治施工方案及技术措施
- 四川省巴塘县2026年保密观知识竞赛题库附答案
- 盘式曝气器系统安装调试施工方案及技术措施
- 2026年《工会基础知识》试题库及答案
- 变电所检修员定期维护安全操作规程
- 2026年齐齐哈尔拜泉县公开招聘幼儿教师34人笔试备考试题及答案详解
- 江苏省无锡市2025-2026学年高二下学期期末考试生物试题(文字版含答案)
- 2026中煤集团山西有限公司面向社会公开招聘292人笔试历年常考点试题专练附带答案详解
- 2026海南陵水黎族自治县县属国有企业第一批招聘60人考试模拟试题及答案详解
- 2026年高一历史学业水平考试知识点归纳总结(复习必背)
- 质量安全总监配备培训考核制度
- (新版)ISO37301-2021合规管理体系全套管理手册及程序文件(可编辑!)
- 高新技术产业开发区洪水影响区域评估报告
- 特殊岗位护理人员准入申请表
- 2023届北京市海淀区第二十中高三第一次调研测试英语试卷含解析
- GB/T 28804-2012无铜镀银玻璃镜
评论
0/150
提交评论