第10章JDBC与数据库访问PPT课件
合集下载
《J2EE企业级软件开发》教学课件:(2014-03)JDBC和MySQL数据库
DriverManager(java.sql.DriverManager):装载驱动程 序,管理应用程序与驱动程序之间的连接。 Driver(由驱动程序开发商提供):将应用程序的API 请求转换为特定的数据库请求。 Connection(java.sql.Connection):将应用程序连接到 特定的数据库。 Statement(java.sql.Statement):在一个给定的连接中 ,用于执行一个静态的数据库SQL语句。
数据库连接池使用方法2独立于web服务器的数据库连接池尽管现在大部分的应用服务器都提供了自己的数据库连接池方案但有些时候若我们的web应用是一个独立的应用程序并不是普通的webjavaee应用而且是单独运行的无须应用服务器的支持
Java EE企业级软件开发
JDBC与MySQL数据库
2014 洛阳师范学院 吕延庆
使用JDBC API访问数据库
(5)关闭相关连接 操作数据库完毕后,需要关闭相应连接以释放 资源,具体方法如下。
//关闭ResultSet实例rs rs.close(); //关闭Statement实例statement statement.close(); //关闭Connection实例con con.close();
数据库连接池简介
在实际应用开发中,如果JSP、Servlet等使用JDBC直 接访问数据库中的数据,每一次数据访问请求都必须 经历建立数据库连接、操作数据和关闭数据库连接等 步骤。
连接并打开数据库是一件既消耗资源又费时的工作。 如果频繁发生这种数据库操作,系统的性能必然会急剧下降 ,甚至会导致系统崩溃。 所谓数据库连接池,就是在一个虚拟的池中,预先创建好一 定数量的Connection对象等待客户端的连接,当有客户端连 接时,则分配一个空闲的Connection对象给客户端连接数据 库;当这个客户端请求结束时,则将Connection对象归还给 池中,用来等待下一个客户端的访问。
数据库访问PPT课件
• 数据库系统(Database System,DBS) • 计算机硬件、操作系统、DBMS、开发工具、应用系统、数据库管理员(Database Administrator,DBA)、用户
关系数据库
• 常用的数据库模型
• 层 次 模 型 ( Hierarchical Model ) 、 网 状 模 型 (Network Model)、关系模型(Relational Model) 和面向对象的数据模型(Object Oriented Model)
数据库操作(2)
• 【例16.2】数据库表记录的插入、更新和删除操作示例
import sqlite3 regions = [("021", "上海"),('022', "天津"),("023", "重庆"),("024", "沈阳")] #打开SQLite数据库:c:\Pythonpa\ch16\sales.db
con = sqlite3.connect(r"c:\Pythonpa\ch16\sales.db") #使用不同的方法分别插入一行数据 con.execute("insert into region(id, name) values ('020', '广东')") con.execute("insert into region(id, name) values (?, ?)", ('001', '北京')) #插入多行数据
Ch16 数据库访问
•本章要点: ✓16.1 数据库基础 ✓16.2 Python数据库访问模块 ✓16.3 使用sqlite3模块连接和操作SQLite数据库 ✓16.4 使用SQLiteStudio查看和维护SQLite数据库
关系数据库
• 常用的数据库模型
• 层 次 模 型 ( Hierarchical Model ) 、 网 状 模 型 (Network Model)、关系模型(Relational Model) 和面向对象的数据模型(Object Oriented Model)
数据库操作(2)
• 【例16.2】数据库表记录的插入、更新和删除操作示例
import sqlite3 regions = [("021", "上海"),('022', "天津"),("023", "重庆"),("024", "沈阳")] #打开SQLite数据库:c:\Pythonpa\ch16\sales.db
con = sqlite3.connect(r"c:\Pythonpa\ch16\sales.db") #使用不同的方法分别插入一行数据 con.execute("insert into region(id, name) values ('020', '广东')") con.execute("insert into region(id, name) values (?, ?)", ('001', '北京')) #插入多行数据
Ch16 数据库访问
•本章要点: ✓16.1 数据库基础 ✓16.2 Python数据库访问模块 ✓16.3 使用sqlite3模块连接和操作SQLite数据库 ✓16.4 使用SQLiteStudio查看和维护SQLite数据库
《jdbc培训课件》PPT课件
◦ 用处:和数据可建立连接,发送SQL语句,处理数据库返回的 结果集
2021/6/10
2
JDBC主要完成的工作
◦1. 注册JDBC驱动程序 ◦ 2.建立与数据库的连接 ◦ 3.使用SQL语句进行数据库操作 ◦ 4.关闭相关连接
2021/6Class.forname(“com.mysql.jdbc.Driver”);——常用 ◦ Class.forname(“com.microsofe.sqlserver.jdbc.SQLServerDriver”);——常用
JDBC
——数据库应用
2021/6/10
1
简介
JDBC(Java Data Base Connectivity) ◦ 1996年,sun公司提出。是一种用于执行SQL语句的Java API,可
以为多种关系数据库提供统一访问,它由一组用Java语言编写 的类和接口组成。JDBC提供了一种基准,据此可以构建更高级 的工具和接口,使数据库开发人员能够编写数据库应用程序
使用statement对象发送SQL语句
2021/6/10
6
使用SQL进行数据库操作
对数据库的操作主要有:添加,删除,修改,查看四种。 ◦添加:
Sql语句:insert into 表名(field1 , field2) values(value1,value2); 如:insert into student(id , name) values(“001”,”李明”);
查询用Statement.executeQuery来完成,返回的是ResultSet对象,ResultSet 中包含了查询的结果;查询相对与增、删、改要复杂一些,因为有查询结 果要处理。
2021/6/10
2021/6/10
2
JDBC主要完成的工作
◦1. 注册JDBC驱动程序 ◦ 2.建立与数据库的连接 ◦ 3.使用SQL语句进行数据库操作 ◦ 4.关闭相关连接
2021/6Class.forname(“com.mysql.jdbc.Driver”);——常用 ◦ Class.forname(“com.microsofe.sqlserver.jdbc.SQLServerDriver”);——常用
JDBC
——数据库应用
2021/6/10
1
简介
JDBC(Java Data Base Connectivity) ◦ 1996年,sun公司提出。是一种用于执行SQL语句的Java API,可
以为多种关系数据库提供统一访问,它由一组用Java语言编写 的类和接口组成。JDBC提供了一种基准,据此可以构建更高级 的工具和接口,使数据库开发人员能够编写数据库应用程序
使用statement对象发送SQL语句
2021/6/10
6
使用SQL进行数据库操作
对数据库的操作主要有:添加,删除,修改,查看四种。 ◦添加:
Sql语句:insert into 表名(field1 , field2) values(value1,value2); 如:insert into student(id , name) values(“001”,”李明”);
查询用Statement.executeQuery来完成,返回的是ResultSet对象,ResultSet 中包含了查询的结果;查询相对与增、删、改要复杂一些,因为有查询结 果要处理。
2021/6/10
jdbc基本原理 ppt课件
面。
jdbc基本原理
4
jdbc基本原理
5
JDBC编程步骤
1. 生成JDBC驱动的实例或是通过 jdbc.drivers系统属性加载--向系统 注册一个驱动程序。
2. 指定数据库 3. 打开数据库连接 4. 提交数据库查询 5. 取得查询结果
jdbc基本原理
6
jdbc基本原理
7
加载驱动程序
通过调用方法 Class.forName。这 将显式地加载驱动程序类。 Class.forName(“oracle.jdbc.driver. OracleDriver”);
CallableStatement从PreparedStatement接口继承而 来。
CallableStatement cstmt = con.prepareCall( "{call reviseTotal(?)}"); cstmt.setByte(1, 25); cstmt.registerOutParameter(1, java.sql.Types.TINYINT); cstmt.executeUpdate(); byte x = cstmt.getByte(1);
Server
JDBC
DB Server1
DB Server2
DB Server3
jdbc基本原理
3
JDBC(★ )
JDBC-- Java DataBase Connectivity
JDBC功能: 支持基本SQL语句,在Java程序中实现
数据库操作功能并简化操作过程; 提供多样化的数据库连接方式; 为各种不同的数据库提供统一的操作界
Connection con = DriverManager. getConnection(url, “user", “password ");
jdbc基本原理
4
jdbc基本原理
5
JDBC编程步骤
1. 生成JDBC驱动的实例或是通过 jdbc.drivers系统属性加载--向系统 注册一个驱动程序。
2. 指定数据库 3. 打开数据库连接 4. 提交数据库查询 5. 取得查询结果
jdbc基本原理
6
jdbc基本原理
7
加载驱动程序
通过调用方法 Class.forName。这 将显式地加载驱动程序类。 Class.forName(“oracle.jdbc.driver. OracleDriver”);
CallableStatement从PreparedStatement接口继承而 来。
CallableStatement cstmt = con.prepareCall( "{call reviseTotal(?)}"); cstmt.setByte(1, 25); cstmt.registerOutParameter(1, java.sql.Types.TINYINT); cstmt.executeUpdate(); byte x = cstmt.getByte(1);
Server
JDBC
DB Server1
DB Server2
DB Server3
jdbc基本原理
3
JDBC(★ )
JDBC-- Java DataBase Connectivity
JDBC功能: 支持基本SQL语句,在Java程序中实现
数据库操作功能并简化操作过程; 提供多样化的数据库连接方式; 为各种不同的数据库提供统一的操作界
Connection con = DriverManager. getConnection(url, “user", “password ");
JDBC基础PPT教学课件
2020/12/09
8
JDBC基础
❖ 3.<subname>是用来标识数据源的。根据子协议的不同, subname要能给出连接到一个数据库的中够信息。然而要连 接一个在远程服务器上的数据库需要更多的信息。如果数据 源要通过Internet来连接,JDBC URL中的subname必须包含 网络地址并且要使用下面的标准URL命名转换规则: //hostname:port/subsubname 假设MyNet是一个连接Internet上主机的网络协议,那么这时 的JDBC URL就应该是这样的: jdbc:dbnet://remote:356
2020/12/09
9
JDBC基础
在企业开发中,我们一般采用JDBC做为JAVA开发 的数据库连接工具,一般存在四种驱动程序 1 类型一驱动: JDBC-ODBC通过JDBC类与ODBC 类共同配合
2 类型二驱动:WEBLOGIC JDRIVER FOR ORA 需要数据库网络库支持
3 类型三驱动:通过中间件服务器配合来连接数据 库,微软的推荐驱动和WEBLOGIC池驱动 4 类型四驱动:SYBASE JCONNECT,专有驱动
JDBC开发篇
2020/12/09
1
JDBC基础
❖ 用JDBC 驱动程序建立一个数据库连接必须用JDBC 驱动程序管理器(JDBC driver manager)来注册。 例如,当驱程序类包括适当的静态的驱动程序初始 化器,就可以装载并且注册由某个JDBC驱动程序 类名实现的JDBC驱动程序。例如下面的程序: Class.forName(“SomeJDBCDriverClassName”);
2020/12/09
4ห้องสมุดไป่ตู้
JDBC_PPT
erTransaction tx = (UserTransaction)ctx.lookup(“jndiName"); tx.begin(); //connection1 connection2 (可能来自不同的数据库)… mit();//tx.rollback();
事务(SavePoint)
当只想撤销事务中的部分操作时可使用SavePoint SavePoint sp = connection.setSavepoint(); connection.rollerbak(sp);mit();
事务(JTA)
跨越多个数据源的事务,使用JTA容器实现事务。 分成两阶段提交。
删除
删除对应SQL的DELETE,返回被删除的行(记录)数
conn = getConnection(); Statement st = conn.createStatement(); String sql=“delete from user where id=1”; int i = st.executeUpdate(sql); //i为删掉的记录数
建立连接(Connection)
Connection conn = DriverManager.getConnection(url, user, password); url格式: JDBC:子协议:子名称//主机名:端口/数据库名?属性名 =属性值&… User,password可以用“属性名=属性值”方式告诉数 据库; 其他参数如: useUnicode=true&characterEncoding=GBK。
JDBC
简介
JDBC(Java Database Connectivity,java数据库连 接),是一种执行SQL语句的Java API,由一些接口 和类构成的API。 J2SE的一部分,由java.sql,javax.sql包组成(查看JDK 文档)。
事务(SavePoint)
当只想撤销事务中的部分操作时可使用SavePoint SavePoint sp = connection.setSavepoint(); connection.rollerbak(sp);mit();
事务(JTA)
跨越多个数据源的事务,使用JTA容器实现事务。 分成两阶段提交。
删除
删除对应SQL的DELETE,返回被删除的行(记录)数
conn = getConnection(); Statement st = conn.createStatement(); String sql=“delete from user where id=1”; int i = st.executeUpdate(sql); //i为删掉的记录数
建立连接(Connection)
Connection conn = DriverManager.getConnection(url, user, password); url格式: JDBC:子协议:子名称//主机名:端口/数据库名?属性名 =属性值&… User,password可以用“属性名=属性值”方式告诉数 据库; 其他参数如: useUnicode=true&characterEncoding=GBK。
JDBC
简介
JDBC(Java Database Connectivity,java数据库连 接),是一种执行SQL语句的Java API,由一些接口 和类构成的API。 J2SE的一部分,由java.sql,javax.sql包组成(查看JDK 文档)。
第10章 JDBC与数据库访问
8
例如:设在“学生”数据库中有“学生成绩”表,其
内容如表10-1所示:
考号 4201025001 4201025002 姓名 王丹 李屹 性别 女 男 出生日期 1989-10-15 1988-10-26 数学 95 96 语文 87 80 英语 88 88 综合 78 85
4201025003
34statementcreatestatementintresultsettypeintresultsetconcurrencytypeforwardonly结果集不可滚动typescrollinsensitive结果集可滚动不反映数据库的变化typescrollsensitive结果集可滚动反映数据库的变化concurreadonly不能用结果集更新数据concurupdatable能用结果集更新数据35booleanabsoluteintrow移动记录指针到指定的记录voidbeforefirst移动记录指针到第一笔记录之前voidafterlast移动记录指针到最后一笔记录之后booleanfirst移动记录指针到第一笔记录booleanlast移动记录指针到最后一笔记录booleannext移动记录指针到下一笔记录booleanprevious移动记录指针到上一笔记录voiddeleterow删除记录指针指向的记录36statementstmtconncreatestatementresultsettypescrollsensitiveresultsetconcurupdatable
39
DatabaseMetaData dbmd = con.getMetaData(); System.out.println("数据库的URL"+dbmd.getURL()); System.out.println(“数据库用户名:"+ dbmd.getUserName()); System.out.println("数据库驱动程序名:"+ dbmd.getDriverName()); System.out.println("数据库驱动程序版本号:"+ dbmd.getDriverVersion()); System.out.println("数据库产品名:"+ dbmd.getDatabaseProductName()); System.out.println("数据库产品版本号:"+ dbmd.getDatabaseProductVersion());
例如:设在“学生”数据库中有“学生成绩”表,其
内容如表10-1所示:
考号 4201025001 4201025002 姓名 王丹 李屹 性别 女 男 出生日期 1989-10-15 1988-10-26 数学 95 96 语文 87 80 英语 88 88 综合 78 85
4201025003
34statementcreatestatementintresultsettypeintresultsetconcurrencytypeforwardonly结果集不可滚动typescrollinsensitive结果集可滚动不反映数据库的变化typescrollsensitive结果集可滚动反映数据库的变化concurreadonly不能用结果集更新数据concurupdatable能用结果集更新数据35booleanabsoluteintrow移动记录指针到指定的记录voidbeforefirst移动记录指针到第一笔记录之前voidafterlast移动记录指针到最后一笔记录之后booleanfirst移动记录指针到第一笔记录booleanlast移动记录指针到最后一笔记录booleannext移动记录指针到下一笔记录booleanprevious移动记录指针到上一笔记录voiddeleterow删除记录指针指向的记录36statementstmtconncreatestatementresultsettypescrollsensitiveresultsetconcurupdatable
39
DatabaseMetaData dbmd = con.getMetaData(); System.out.println("数据库的URL"+dbmd.getURL()); System.out.println(“数据库用户名:"+ dbmd.getUserName()); System.out.println("数据库驱动程序名:"+ dbmd.getDriverName()); System.out.println("数据库驱动程序版本号:"+ dbmd.getDriverVersion()); System.out.println("数据库产品名:"+ dbmd.getDatabaseProductName()); System.out.println("数据库产品版本号:"+ dbmd.getDatabaseProductVersion());
JDBC详解 .ppt
JDBC OCI client-side driver(客户端OCI驱动程序):
第二类JDBC驱动程序,使用Java本地方法调用底层的C库(OCI,即Oracle Call Interface) 与Oracle数据库交互,运行需要安装Oracle客户端。不使用于 Java applets,一般部署于Web服务器等中间层,有连接池支持,性能较高。
客户程序所在主机要求装有特定数据库厂商的驱动程序。
JDBC-NET纯java驱动程序
驱动程序用Java编写,把JDBC调用转给一个独立于数据库管 理系统的网络中间件,该中间件再把调用传给DBMS。
系统中需要配置一个专门的驱动程序中间件服务器。 灵活性大
本地协议纯java驱动程序
驱动把JDBC调用直接转换给DBMS使用的网络协议,是网络 访问的极好方案。
第二类驱动程序, Oracle服务器上的Java代码使用这种驱动程序直接访问SQL引擎, 避免了网络负担,速度最快,但只能访问服务器所在的哪个数据库.
中间件的特性
网络透明性:能支持所有类型的网络;
服务器透明性:不管服务器上的DBMS是何种型 号,一个好的数据库中间件应该能通过标号的SQL 语言与不同的DBMS上的SQL语言连接起来。
语言透明性:客户机可用任何开发语言进行发送 请求和接收回答,被调用的功能应该像语言那样 也是独立的。中间件还应该保证开发语言的数据 类型和服务器上数据库使用的数据类型之间能够 相互转换。
中间件
数据源
3.1、JDBC驱动程序分类
JDBC-ODBC桥驱动程序+ODBC驱动程序
客户程序所在主机安装了ODBC驱动程序,并创建了ODBC数 据源。
JDBC-ODBC桥驱动程序由sun免费提供,封装在JDK中。
第二类JDBC驱动程序,使用Java本地方法调用底层的C库(OCI,即Oracle Call Interface) 与Oracle数据库交互,运行需要安装Oracle客户端。不使用于 Java applets,一般部署于Web服务器等中间层,有连接池支持,性能较高。
客户程序所在主机要求装有特定数据库厂商的驱动程序。
JDBC-NET纯java驱动程序
驱动程序用Java编写,把JDBC调用转给一个独立于数据库管 理系统的网络中间件,该中间件再把调用传给DBMS。
系统中需要配置一个专门的驱动程序中间件服务器。 灵活性大
本地协议纯java驱动程序
驱动把JDBC调用直接转换给DBMS使用的网络协议,是网络 访问的极好方案。
第二类驱动程序, Oracle服务器上的Java代码使用这种驱动程序直接访问SQL引擎, 避免了网络负担,速度最快,但只能访问服务器所在的哪个数据库.
中间件的特性
网络透明性:能支持所有类型的网络;
服务器透明性:不管服务器上的DBMS是何种型 号,一个好的数据库中间件应该能通过标号的SQL 语言与不同的DBMS上的SQL语言连接起来。
语言透明性:客户机可用任何开发语言进行发送 请求和接收回答,被调用的功能应该像语言那样 也是独立的。中间件还应该保证开发语言的数据 类型和服务器上数据库使用的数据类型之间能够 相互转换。
中间件
数据源
3.1、JDBC驱动程序分类
JDBC-ODBC桥驱动程序+ODBC驱动程序
客户程序所在主机安装了ODBC驱动程序,并创建了ODBC数 据源。
JDBC-ODBC桥驱动程序由sun免费提供,封装在JDK中。
JDBC和数据库访问
获取Байду номын сангаас录集中的列数
ResultSet rs = stmt.executeQuery("select * from COFFEES"); ResultSetMetaData rsmd = rs.getMetaData(); int numberOfColumns = rsmd.getColumnCount();
性能比较(实例)
数据表userinfo
Create Table userinfo(
userid varchar(50), passwd varchar(50), username varchar(50), gender varchar(50)
)
事务处理
事务(Transaction)是DBMS的执行单位, 它由有限的数据库操作序列组成。具有下 列4个性质:
Statement stmt = conn.createStatement();
该对象的executeUpdate()方法用以进行改 变数据库的操作(创建表,增加、删除、 修改记录等),该方法返回一个整数表示 影响到的行数 方法executeQuery()用以进行数据库查询, 返回一个ResultSet对象
查询
使用Statement对象的executeQuery()方法执行SQL 查询命令,该方法返回一个记录集(ResultSet),在 记录集中包含了所有符合查询条件的记录。 使用ResultSet类的next方法可以使游标在记录集中 进行移动,从而访问所有的记录。当next()方法返回 false时,说明已经移动到了记录集的末尾。 记录集使用完后应该使用其close()方法关闭。 使用ResultSet类的getXXX()方法可以获取特定字段 的数据,其中XXX表示该字段的数据类型。
Java基础案例教程 第10章 JDBC
✎
10.2 JDBC常用API
(2)DriverManager接口 DriverManager接口用于加载JDBC驱动、创建与数据库的连接。在 DriverManager接口中,定义了两个比较重要的静态方法
方法名称
功能描述
static void registerDriver(Driver driver)
功能描述
用于获取指定字段的String类型的值,参数columnIndex 代表字段的索引。
用 于 获 取 指 定 字 段 的 String 类 型 的 值 , 参 数 columnName代表字段的名称。
用于获取指定字段的int类型的值,参数columnIndex代 表字段的索引。 用于获取指定字段的int类型的值,参数columnName代 表字段的名称。
CallableStatement sql)
prepareCall(String 用于创建一个CallableStatement对象来调用数据 库存储过程
✎
10.2 JDBC常用API
(4)Statement接口 Statement接口用于执行静态的SQL语句, 并返回一个结果对象。Statement接口对象 可以通过Connection实例的 createStatement()方法获得,该对象会把静 态的SQL语句发送到数据库中编译执行,然 后返回数据库的处理结果。
✎
10.2 JDBC常用API
通过setter()方法为SQL语句中的参数赋值时,可以通过已定义的SQL类
型参数兼容输入参数。例如,如果参数具有的SQL类型为Integer,那么
应该使用setInt()方法或setObject()方法设置多种类型的输入参数,具体
一JDBC的基础知识-19页PPT资料
二 JDBC设计
二 JDBC设计
2 JDBC 驱动程序的类型
第一类 JDBC-ODBC桥驱动程序及ODBC驱动程序 效率最低,它是利用ODBC驱动程序提供JDBC访问, 客户机上必须安装ODBC驱动程序。
第二类 性能比前者好些,它是跳过ODBC利用开发商提供的本地库 (需要在客户机上安装)直接于数据库通信 。
五 可滚动的和可更新的结果集
1 可滚动的结果集
五 可滚动的和可更新的结果集
五 可滚动的和可更新的结果集
2可更新的结果集
六 PreparedStatemenБайду номын сангаас类
1 PreparedStatement实例包含已编译的SQL语句
2 包含于PreparedStatement对象中的SQL语句可具有一个 或多个IN参数.
一 JDBC的基础知识
Java应用程序
Java 应用程序 编程接口
JDBC (Java 数据库连接)
(sun公司提供)
插入 修改 数据库
删 除 查询
二 JDBC设计
1 JDBC结构:Java程序,JDBC管理器, 驱动程序,数据库四部分
使用JDBC/ODBC桥来利用ODBC的接口访问 数据库
通过直接的JDBC驱动程序来实现数据库的访 问
第三类 驱动程序是独立于数据库服务器的,它只和一个中间 层通信,由这个中间层来实现数据库的访问。
第四类 性能最好,它是将JDBC调用直接转换为DBMS 所使用的网络协议,直接和数据库服务器通信.
二 JDBC设计
二 JDBC设计
三层应用模式
三 Java中JDBC的使用
用于JDBC编程的类都包含在java.sql 包 中 1 DriverManager驱动程序管理类:管理各种不同
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
➢ 数据库管理
JAVA
语
以数据为中心组织数据,减少冗余,并提供更高的数据共
言
享能力,由数据库系统进行管理
程 序
程序和数据具有较高的独立性,当数据的逻辑结构改变时,
设
不涉及数据的物理结构,也不影响应用程序,从而降低应
计
用程序研制与维护的费用
2020/8/17
4
10.1.1 数据库技术的特点(续)
➢ 可以是表中的一列,也可以由几列组合而成
➢ 在建表时如果定义了主码,系统可以对输入该表的数据进行 检查,要求主码不能重、也不能空(NULL)
JAVA
➢ 例如在学生表中
语
言
学号可以作为主码,因为一个学号可以唯一地确定表中的一个学
程 序
生记录
设
由于学生中有重名现象,姓名就不能用来做为主码
计
2020/8/17
person
ID
Name
Department
Occupation
Salary
Education
1
张三
1
Manager
3500
5
2
李四
2
Secretary
1200
3
3
王五
3
Driver
1500
2
4
韩六
4
Engineer
3000
4
department
DepID
Name
1
经理室
JAVA
2
项目部
语
3
财务部
…
学生表
JAVA
语
➢ 由5列组成,每一列表示学生的一个属性
言
➢ 每个学生都是用学号、姓名、性别、出生年月及所属系的系
程 序
号等属性来描述,在这些属性上的一组合法取值就对应一个
设
学生记录(表中的一行)
计
2020/8/17
9
10.1.3 关系表中的主码与外来码
主码
➢ 为了保证关系表中没有重复的记录,需要为关系表定义一个 主码,作用是唯一标识表中的一个记录
➢ 每个表都用于存储面向某个主题的信息。例如:
学生表存储学生信息
系表存储各系的信息
课程表存储课程信息等
JAVA
语
➢ 关系表每一行存储一个记录,每一列表示记录的一个属性。
言
设计一个关系表时需要
程 序
为表命名
设
设计表的列结构,其中包括列名及列的数据类型
计
2020/8/17
8
10.1.2 数据模型
JAVA语言程序设计
第十章 JDBC与数据库访问
JAVA
语 言 程 序 设 计
2020/8/17
1 1
第一部分
整体概述
THE FIRST PART OF THE OVERALL OVERVIEW, PLEASE SUMMARIZE THE CONTENT
JAVA
语 言 程 序 设 计
2020/8/17
➢ 部门编码表(department)
保存了部门编号和部门名称
JAVA
语
部门编号(DepID)是主码
言 程
➢ 学历编码表(education)
序
保存了学历编号和学历名称
设 计
学历编号(EduID)是主码
2020/8/17
13
10.1.3关系表中的主码与外来码(续)
——员工信息管理系统(PIMS)的例子
2
目录
10.1 数据库基础知识 10.2 通过JDBC访问数据库 10.3 本章小结
JAVA
语 言 程 序 设 计
2020/8/17
3
10.1 数据库基础知识
数据管理的两个阶段
➢ 文件管理
各种数据都是以文件为单位存储在外存,且由操作系统统 一管理
文件相对独立,文件结构不能很好地反映现实世界中事物 之间的联系,文件中存在大量的数据冗余
学 生 表
学 号 姓 名 性 别 出 生 年 月 系 号 2005001 张 小 红 女 1987-4-23 d01 2005002 李 平 男 1988-2-13 d01 2005101 成 功 男 1986-10-21 d02
…
系 表
系 号 d01 d02
系 名 电 话 计 算 机 系 3395 物 理 系 3787
数据模型
➢ 数据库的逻辑结构
➢ 所有的数据库系统都是基于某种数据模型的
➢ 不同种类的数据库可能支持不同的数据模型
➢ 关系数据库就是因为支持关系模型而得名
JAVA
语 言 程 序 设 计
2020/8/17
7
10.1.2 数据模型
关系模型
➢ 形象地说就是二维表结构,也称之为关系表
➢ 一个关系数据库可以包含多个关系表,关系表是数据库中 组织和存储数据的基本单位
应用程序访问数据库的基本模式
➢ DBMS(数据库管理系统)是数据库的核心软 件。数据库系统的各种操作,包括创建数据库 对象、检索和修改数据库中的数据,都是通过 DBMS实现的
数据库应用程序1
JAVA
语
言
数据库应用程序2
程
序
设
计
数据库应用程序3
DBMS
数据库
2020/8/17
6
10.1.2 数据模型
10
10.1.3 关系表中的主码与外来码(续)
外来码
➢ 现实世界中事物之间的联系反映到数据库中就体现为表之间的联系, 在关系数据库中,借助“外来码”实现存贮这种联系的信息
➢ 如果一个表中的某一列是另外一个表中的主码,那么该列称之为外 来码。
ห้องสมุดไป่ตู้
例如在学生表中,“系号”就是外来码,因为系号是系表的主码,在学 生表中设计了“系号”一列,就是为了存储学生和系之间的联系信息
JAVA
➢ 通过外来码和主码的等值连接将不同表里的相关记录连接在一起,
语 言
从而实现数据库中相关数据的查找
程
可以查询每个学生所在系的信息,也可以查询指定系所包含的学生信息
序
设
计
2020/8/17
11
10.1.3 关系表中的主码与外来码(续)
Number Name
Department Salary
Location
23603
Jones
413
24568
Kerwin
413
Row
34589
Larson
642
35761
Myers
611
JAVA
47132
Neumann 413
语
言 程
78321
Stephens
611
序
设
Primary key
Column
计
2020/8/17
1100 2000 1800 1400 9000 8500
New Jersey New Jersey Los Angeles Orlando New Jersey Orlando
12
10.1.3关系表中的主码与外来码(续)
——员工信息管理系统(PIMS)的例子
该数据库中建有
➢ 员工基本信息表(person)
包括工作证号、姓名、部门编号、职务、工资、学历编号等字段 工作证号(ID)是该表的主码 Department列是一个外来码,匹配部门编码表中的DepID主码 Education列也是一个外来码,匹配学历编码表中的EduID主码