130 likes | 272 Views
第九章 数据库连接 --jdbc. 9.1 数据库简介. 数据库是某种文件结构存储的一系列信息表,这种文件结构使我们能够访问这些表、选择表中的列、对表进行排序以及根据各种标准选择行。 属于数据库中表的范式: 第一范式:表中的每个表元应该只有一个值(永远不可能是一个数组) 第二范式:满足第一范式,并且每一个副键列完全依赖于主键列。也就是说主键和该行中的其余表元之间是一一对应的关系 第三范式:满足第二范式,并且所有副键列是相互独立的。任何一个数据列中包含的值都不能从其他列的数据计算得到。. 9.2 关系型数据模型
E N D
9.1 数据库简介 • 数据库是某种文件结构存储的一系列信息表,这种文件结构使我们能够访问这些表、选择表中的列、对表进行排序以及根据各种标准选择行。 • 属于数据库中表的范式: • 第一范式:表中的每个表元应该只有一个值(永远不可能是一个数组) • 第二范式:满足第一范式,并且每一个副键列完全依赖于主键列。也就是说主键和该行中的其余表元之间是一一对应的关系 • 第三范式:满足第二范式,并且所有副键列是相互独立的。任何一个数据列中包含的值都不能从其他列的数据计算得到。
9.2 关系型数据模型 • 目前主要数据模型有:层次模型、网状模型、关系模型。 • 关系模型时应用数学方法来处理数据库类型的,最早由美国IBM公司E.F.Godd提出,其主要特点是: • 面向集合的处理,可以一次操作多个行 • 数据逻辑独立性,使得应用程序不随数据库的改变而改变 • 数据的自动导航 • 一般odbc和jdbc 所支持的都是关系型数据库管理系统
9.3 创建和用odbc注册数据库 • 假设我们要访问SQL server 服务器上的一个pubs数据库,该库有一个表students。 • 为了连接这个SQL server 数据库,我们需设置一个数据源。具体步骤如下: • 控制面板----管理工具----ODBC数据源,但开odbc数据源。 • 选择“用户DSN”页签,单击“添加”按钮,出来新的数据源。 • 根据所要连接的数据源选择要添加的驱动程序(这里选择sql server),单击“完成”按钮。出来设置数据源具体项目的对话框。 • 在数据源名称栏上填上一个自己定义的名字,描述栏可以选填。有的时候要求填选服务器的名字,根据需要可以选填。 • 单击“下一步”按钮,选择“使用用户登录表示号和密码的sql server验证” ,登陆标识号填写“sa”密码为空。单击“下一步” • 选填“改变默认的数据库为”复选框,然后在下拉式的列表框中选择前面要访问的数据库pubs。 • 单击“下一步”按钮,点选“执行字符数据转换” • 单击“完成” • 测试
Jdbc-odbc桥接器 • 通过前面对数据源的定义,我们可以这样理解,我们已经有一个数据源,这个数据源就是一个数据库。为了要连接到这个数据库,需要建立一个JDBC-odbc桥接器,即加载桥接器驱动程序。 • Class.forName(“sun.jdbc.odbc.JdbcodbcDriver”); • 这里Class是包java.lang中的一个类,该类通过调用它的静态方法forName就可以建立JDBC-ODBC桥接器。由于在建立桥接器时可能发生异常,所以建立桥接器的标准是: • try{Class.forName(“sun.jdbc.odbc.JdbcodbcDriver”);} • catch(ClassNotFoundException e){}
查询记录 • 要查询数据库中的记录,必须和数据库建立连接,由于使用的是JDBC-ODBC方式访问数据库,那么就要与数据库建立连接。 • 1.首先创建一个java.sql中的Connection类的一个对象声明,然后再使用类DriverManager调用它的静态方法getConnectin()创建这个连接对象 • Connection con=DriverManager.getConnection(“jdbc:odbc:数据源名字”,“登陆名称”,“登陆密码”); • 如果没有登陆名称和密码的话就为“”。
2.然后就可以向数据库发送sql语句了,首先使用Statement声明一个SQL语句对象,然后通过刚才创建的连接数据库的对象con调用方法createStatement()创建这个SQL语句对象2.然后就可以向数据库发送sql语句了,首先使用Statement声明一个SQL语句对象,然后通过刚才创建的连接数据库的对象con调用方法createStatement()创建这个SQL语句对象 • Try{ Statement sql=con.createStatement();} • Catch(SQLException e) • {} • 3.处理查询结果 • 有了SQL语句对象后,这个对象就可以调用相应的方法实现对数据库中表的查询和修改。并将结果存放在一个ResultSet类声明的对象中,也就是说SQL语句对象数据库的查询操作将返回一个ResultSet对象: • ResultSet rs=sql.excuteQuery(“SELECT * FROM 成绩表”); • 顺序查询:Example5_1.jsp
游动查询: • 有时为了实现前后移动、或显示结果集指定的一条记录,必须要返回一个可滚动的结果集,这样就必须对程序作相应的调整,使用下述方法先获得一个Statement对象: • Statement stmt=con.createStatement(int type,int con); • 然后根据参数的类型type、concurrency的取值情况,stmt返回相应类型的结果集: • ResultSet rs=stmt.excuteQuery(SQL语句);
其中type取值决定滚动的方式: • Result.TYPE_FORWORD_ONLY 结果集的游标只能向下滚动。 • Result.TYPE_SCROLL_INSENSITIVE 结果集的游标可以上下滚动。当数据库变化时,当前结果集不变。 • Result.TYPE_FORWORD_ONLY结果集的游标可以上下滚动。当数据库变化时,当前结果集相应改变。 • Concurrency取值决定是否可以用结果集更新数据库: • Result.CONCUR_READ_ONLY 不能用结果集更新数据库中表 • Result.CONCUT_UPDATABLE 能够用结果集更新数据库中的表 • Example5_2.jsp
随机查询 Example5-4.jsp • 参数查询 Example5-5.jsp • 排序查询 Example5-6.jsp • 分析结果集查询 Example5-7.jsp • 使用通配符查询 • 通过使用Sql语句操作符LIKE进行模式匹配,使用%代替一个多个字符,用一个下划线“_”代替一个字符。 • rs=sql.executeQuery(“SELECT * FROM students WHERE 姓名 LIKE ‘王%’ “); • 对前面的5-7进行相应的更改。
更新、添加、删除记录 • 可以使用sql语句更新记录中字段的值,Statement对象调用方法: • Public int executeUpdate(String sqlStatement);
成绩录入系统 • 采用数据源的连接方式: • 首先创建一个access数据库student.mdb,将该数据库设置为一个数据源,名称为manage,库中含有三个表:基本信息表、成绩表、verify表,其中基本信息表和成绩表构成一对多的关系
Jdbc 简介 • Jdbc是一种用于执行sql语句的java api,它是由一组用java编程语言编写的类和接口组成。Jdbc为工具/数据库开发人员提供一个标准的api,使的我们能够用纯java来编写数据库应用程序。 • Jdbc的用途: • 与数据库建立连接、发送sql语句、处理结果