数据库程序设计.ppt_第1页
数据库程序设计.ppt_第2页
数据库程序设计.ppt_第3页
数据库程序设计.ppt_第4页
数据库程序设计.ppt_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第12讲 数据库程序设计,目录,12.1 数据库基础知识 12.2 数据库连接技术 12.3 数据库表数据操作,12.1 数据库基础知识,数据管理的两个阶段 文件管理 各种数据都是以文件为单位存储在外存,且由操作系统统一管理 文件相对独立,文件结构不能很好地反映现实世界中事物之间的联系,文件中存在大量的数据冗余 数据库管理 以数据为中心组织数据,减少冗余,并提供更高的数据共享能力,由数据库系统进行管理 程序和数据具有较高的独立性,当数据的逻辑结构改变时,不涉及数据的物理结构,也不影响应用程序,从而降低应用程序研制与维护的费用,12.1.1 数据库技术的特点,数据库技术有如下一些特点 面向企业或部门,以数据为中心组织数据,形成综合性的数据库为各应用共享 采用一定的数据模型。数据模型不仅要描述数据本身的特点,而且要描述数据之间的联系 数据冗余小,易修改、易扩充。不同的应用程序根据处理要求,从数据库中获取需要的数据,这样就减少了数据的重复存贮,也便于维护数据的一致性 程序和数据有较高的独立性。当数据的物理结构和逻辑结构改变时,有可能不影响或较少影响应用程序 具有良好的用户接口,用户可方便地开发和使用数据库 对数据进行统一管理和控制,提供了数据的安全性、完整性、以及并发控制,数据库基础知识,12.1.1 数据库技术的特点(续),应用程序访问数据库的基本模式 DBMS(数据库管理系统)是数据库的核心软件。数据库系统的各种操作,包括创建数据库对象、检索和修改数据库中的数据,都是通过DBMS实现的,数据库基础知识,12.1.2 数据模型,数据模型 数据库的逻辑结构 所有的数据库系统都是基于某种数据模型的 不同种类的数据库可能支持不同的数据模型 关系数据库就是因为支持关系模型而得名,数据库基础知识,关系模型 形象地说就是二维表结构,也称之为关系表 一个关系数据库可以包含多个关系表,关系表是数据库中组织和存储数据的基本单位 每个表都用于存储面向某个主题的信息。例如: 学生表存储学生信息 系表存储各系的信息 课程表存储课程信息等 关系表每一行存储一个记录,每一列表示记录的一个属性。设计一个关系表时需要 为表命名 设计表的列结构,其中包括列名及列的数据类型,12.1.2 数据模型,数据库基础知识,12.1.2 数据模型,学生表 由5列组成,每一列表示学生的一个属性 每个学生都是用学号、姓名、性别、出生年月及所属系的系号等属性来描述,在这些属性上的一组合法取值就对应一个学生记录(表中的一行),数据库基础知识,12.1.3 关系表中的主码与外来码,主码(Primary Key) 为了保证关系表中没有重复的记录,需要为关系表定义一个主码,作用是唯一标识表中的一个记录 可以是表中的一列,也可以由几列组合而成 在建表时如果定义了主码,系统可以对输入该表的数据进行检查,要求主码不能重、也不能空(NULL) 例如在学生表中 学号可以作为主码,因为一个学号可以唯一地确定表中的一个学生记录 由于学生中有重名现象,姓名就不能用来做为主码,数据库基础知识,12.1.3 关系表中的主码与外来码(续),外来码(Foreign Key) 现实世界中事物之间的联系反 映到数据库中就体现为表之间的联系,在关系数据库中,借助“外来码”实现存贮这种联系的信息 如果一个表中的某一列是另外一个表中的主码,那么该列称之为外来码。 例如在学生表中,“系号”就是外来码,因为系号是系表的主码,在学生表中设计了“系号”一列,就是为了存储学生和系之间的联系信息 通过外来码和主码的等值连接将不同表里的相关记录连接在一起,从而实现数据库中相关数据的查找 可以查询每个学生所在系的信息,也可以查询指定系所包含的学生信息,数据库基础知识,12.1.3 关系表中的主码与外来码(续),数据库基础知识,该数据库中建有 员工基本信息表(person) 包括工作证号、姓名、部门编号、职务、工资、学历编号等字段 工作证号(ID)是该表的主码 Department列是一个外来码,匹配部门编码表中的DepID主码 Education列也是一个外来码,匹配学历编码表中的EduID主码 部门编码表(department) 保存了部门编号和部门名称 部门编号(DepID)是主码 学历编码表(education) 保存了学历编号和学历名称 学历编号(EduID)是主码,12.1.3关系表中的主码与外来码(续) 员工信息管理系统(PIMS)的例子,数据库基础知识,12.1.3关系表中的主码与外来码(续) 员工信息管理系统(PIMS)的例子,数据库基础知识,12.1.4 建立一个实例数据库,建立数据库需要借助于数据库管理系统,不同的数据库管理系统其具体操作方法是不同的,以Windows平台上的一个简单的关系型数据库Access为例,建立一个数据库,为编写Java的数据库访问程序提供一个实例环境 1启动Office 的Microsoft Access,选择“新建一个Access数据库选项”,在文件名输入栏中输入“PMS.mdb”。该文件代表一个Access数据库,数据库基础知识,12.1.4 建立一个实例数据库,PMS数据库窗口出现在Access主窗口中。在数据库窗口的左侧,列出了常用的7类数据库对象。当选中某对象类后,就可以在右窗口中进行有关该对象的操作,如建立、修改,运行等。7类对象的主要含义分别是: 表 关系表,可以实现表的建立、数据的维护、查询等 查询 可以建立一个查询(视图的概念),运行SQL语句 窗体 数据库应用界面,可进行简单数据库应用开发 报表 报表的制作与打印输出 页 可生成基于web页面的数据库应用界面 宏 可定义完成特定任务的操作或操作集 模块 可定义数据库中使用的公共过程与函数,12.1.4 建立一个实例数据库,2 在对象栏中选择“表”,再选择“使用设计器创建表”方式,单击工具栏中的“设计”按钮,就会出现表设计窗口。在该窗口中可以定义字段的名称、数据类型、字段说明信息等。分别设计Person表、 Department表、Education表,数据库基础知识,12.1.4 建立一个实例数据库,数据库基础知识,12.1.4 建立一个实例数据库,3建立表之间的联系 点击主窗口“工具”菜单中的“关系”选项,打开“关系”视图 用鼠标拖动Education表的EduID属性,拉到Person表的Education属性上,在自动弹出的“编辑关系”对话框中,选择实施参照完整性,点击“创建”按钮 用同样方法建立Department表中DepID列和Person表中Department列,数据库基础知识,12.1.4 建立一个实例数据库,4 为每个表创建数据,数据库基础知识,12.1.5 SQL语言简介,SQL语言 关系数据库的标准语言,从大型数据库(如Oracle)到微机数据库(如Access)都支持 可以实现对数据库的各种操作。例如 表及其他数据库对象的定义 数据的查询与数据维护 对数据库进行控制 是非过程化的语言,只需要告诉数据库做什么,而不需要描述怎么做 语句都是独立执行的,无上下文联系 本身不区分大小写,数据库基础知识,12.1.5 SQL语言简介(续) SQL关键字,数据库基础知识,在SQL语言中,对数据库中数据的操作可分为读写两种 读操作(查询)通过SELECT语句实现,该语句的执行不会改变数据库中的数据 可以返回一行或多行数据 也可能没有返回结果(没有查到满足条件的记录) 涉及到写操作的语句共有3个 INSERT UPDATE DELETE,12.1.5 SQL语言简介(续) SQL语言的读/写操作,数据库基础知识,建表语句 定义表中各列的名称及数据类型 有关列的数据类型可参考具体数据库的语法手册 CREATE TABLE person ( id INTEGER PRIMARY KEY, /定义该列为主码 name VARCHAR(10), /列定义,字符型 department INTEGER, /列定义,整型 occupation VARCHAR(10), salary NUMBER, education INTEGER);,12.1.5 SQL语言简介(续) 建表语句,数据库基础知识,插入语句 向指定表插入一条记录,插入的值要与表的定义匹配 插入一行数据 INSERT INTO table_name VALUES (value1, value2,) 插入一行数据在指定的字段上 INSERT INTO table_name (column1, column2,.) VALUES (value1, value2,) 例如在person表中插入一行 INSERT INTO person VALUES (1, 张三, 1, manager, 3500, 5);,12.1.5 SQL语言简介(续) 插入语句,数据库基础知识,修改语句 修改指定记录中某列的值,更新表中原有数据 其格式为 UPDATE table_name SET column_name = new_value WHERE column_name = some_value 例如:将person表中id号为1的人员的工资修改为3700元 UPDATE person SET salary = 3700 /指定对哪列进行修改、如何修改 WHERE id = 1 ; /选择要修改的行,12.1.5 SQL语言简介(续) 修改语句,数据库基础知识,删除语句 删除表中的指定的数据 其格式为 DELETE FROM table_name WHERE column_name = some_value 例如删除部门号为4的员工记录 DELETE FROM person WHERE department = 4 ;,12.1.5 SQL语言简介(续) 删除语句,数据库基础知识,查询语句 从指定表中取出指定的数据 SELECT select_list INTO new_table FROM table_source WHERE search_condition GROUP BY group_by_expression HAVING search_condition ORDER BY order_expression ASC | DESC ,12.1.5 SQL语言简介(续) 查询语句,数据库基础知识,例:查询工资大于2000的员工的姓名及职务 SELECT * / “*”号表示输出全部列的值 FROM person /指定查询的表,本查询只用到person表 WHERE salary2000 ; /查询条件 例:查询员工“张三”的学历,输出学历名 SELECT FROM person , education /该查询用到两个表 WHERE = 张三 AND cation =id ;,12.1.5 SQL语言简介(续) 查询语句,数据库基础知识,12.2 Java数据库连接技术JDBC,JDBC(Java Data Base Connectivity,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一的访问界面。它由一组用Java语言编写的类和接口组成。 它是一个软件层,允许开发者在java中编写客户端/服务器应用程序。它提供的是一个简单的接口,主要用于执行原始SQL语句并检索结果。,JDBC通常完成以下三项工作: 建立Java程序与数据库的连接。 发送SQL语句。 处理得到的结果。,连接数据库的基本过程为: 注册JDBC驱动程序 建立数据库连接 创建语句对象并发送SQL语句 检索并处理结果 关闭数据库连接,基本过程,四类JDBC驱动程序,第一类:JDBC-ODBC桥 + ODBC驱动程序,四类JDBC驱动程序(续),第二类:本地化方法实现JDBC的API,四类JDBC驱动程序,第三类:通过中间件实现JDBC的API,四类JDBC驱动程序,第四类:直接采用Java语言实现与特定数据库交互的协议,直接访问数据库,12.2.1 JDBC-ODBC桥技术,ODBC(Open Database Connectivity)开放式数据接口技术 通常每种数据库都会提供自己的编程接口,这使得编程人员不得不学习各种数据库的编程接口。为了解决这一问题,微软公司推出了ODBC。 ODBC是Microsoft Window开放服务体系(WOSA)的一部分,是数据库访问的标准接口。它建立了一组规范,并提供一组对数据库访问的标准API(应用程序编程接口),使应用程序可以应用ODBC提供的API来访问任何带有ODBC驱动程序的数据库。 ODBC已经成为一种标准,是作为一种标准的基于SQL的接口而实现的,主要用于处理关系型数据库,可以很好地用于关系型数据库的访问。目前所有关系数据库都提供ODBC驱动程序,但ODBC对任何数据源都未做优化,这也许会对数据库存取速度有影响;同时由于ODBC只能用于关系数据库,是的很难利用ODBC访问对象数据库及其他非关系数据库。,12.2 Java中的数据库连接技术,使用JDBC-ODBC桥 1.ODBC技术 2.JDBC技术 3.JDBC-ODBC桥 4.连接Access数据库 5.连接SQL Server数据库 使用微软提供的驱动类SQL-JDBC 1.连接SQL Server 2000 2.连接SQL Server 2005、2008 使用开源社区的JTDS数据库驱动类 连接SQL Server/Sybase数据库,ODBC( Open Database Connectivity ) 由微软公司提出,用于在数据库管理系统(DBMS)中存取数据 是一套用C语言实现的访问数据库的API 通过ODBC API,应用程序可以存取保存在多种不同数据库管理系统(DBMS)中的数据,而不论每个DBMS使用了何种数据存储格式和编程接口 对于没有提供JDBC驱动的数据库,从Java程序调用本地的C程序访问数据库会带来一系列安全性、完整性、健壮性等方面的问题,因而通过JDBC-ODBC桥来访问没有提供JDBC接口的数据库是一个常用的方案,12.2.1 JDBC-ODBC桥技术 ODBC,通过JDBC访问数据库,ODBC的结构 应用程序(Application) :本身不直接与数据库打交道,主要负责处理并调用ODBC函数,发送对数据库的SQL请求及取得结果 驱动器管理器(ODBC manager) :为应用程序装载数据库驱动器 数据库驱动器(ODBC Drivers) :实现ODBC的函数调用,提供对特定数据源的SQL请求。 数据源(Data Sources,数据库) :由用户想要存取的数据以及与它相关的操作系统、DBMS和用于访问DBMS的网络平台组成。 访问数据库的模式 用户程序 ODBC管理器 ODBC驱动程序 数据库,12.2.1 JDBC-ODBC桥技术 ODBC的结构,通过JDBC访问数据库,ODBC的不足 是一个C语言实现的API,并不适合在Java中直接使用。从Java程序调用本地的C程序会带来一系列类似安全性、完整性、健壮性的缺点 完全精确地实现从C代码ODBC到Java API写的ODBC的翻译也并不令人满意。比如,Java没有指针,而ODBC中大量地使用了指针,包括极易出错的无类型指针“void”。 ODBC并不容易学习,它将简单特性和复杂特性混杂在一起,甚至对非常简单的查询都有复杂的选项。而JDBC刚好相反,它保持了简单事物的简单性,但又允许复杂的特性 ODBC对任何数据源都未做优化,这也许会对数据库存取速度有影响;同时由于ODBC只能用于关系数据库,是的很难利用ODBC访问对象数据库及其他非关系数据库。,12.2.1 JDBC-ODBC桥技术 ODBC的不足,通过JDBC访问数据库,12.2.1 JDBC-ODBC桥 JDBC,JDBC(Java DataBase Connectivity) 是用于执行SQL语句的Java应用程序接口,由一组用Java语言编写的类与接口组成,是一种底层API 使开发人员可以用纯Java语言编写完整的数据库应用程序 用JDBC写的程序能够自动地将SQL语句传送给几乎任何一种数据库管理系统(DBMS),JDBC (Java DataBase Connectivity) 是一种规范,它让各数据库厂商为Java程序员提供标准的数据库访问类和接口,这样就使得独立于DBMS的Java应用开发工具和产品成为可能 隔离了Java与不同数据库之间的对话,使得 程序员只须写一遍程序就可让它在任何数据库管理系统平台上运行 使用已有的SQL标准,并支持其它数据库连接标准,如与ODBC之间的桥接,12.2.1 JDBC-ODBC桥 JDBC,通过JDBC访问数据库,Java程序通过JDBC访问数据库的关系,通过JDBC访问数据库,12.2.1 JDBC-ODBC桥 JDBC,JDBC API 是一组由Java语言编写的类和接口,包含在java.sql和javax.sql两个包中 java.sql为核心包,这个包包含于J2SE中 javax.sql包扩展了JDBC API的功能,成为了J2EE的一个基本组成部分 可分为两个层次 面向底层的JDBC Driver API 主要是针对数据库厂商开发数据库底层驱动程序使用 面向程序员的JDBC API,12.2.1 JDBC-ODBC桥 JDBC API,应用程序通过JDBC API和底层的JDBC Driver API打交道,12.2.1 JDBC-ODBC桥 JDBC API的体系结构,12.2.1 JDBC-ODBC桥 JDBC的Driver类型,JDBC的Driver可以分为4种类型,在这四种驱动器中,后两种“纯Java”的驱动器效率更高,也更具有通用性,它们能够充分表现出Java技术的优势,例如可以在applet中自动下载需要的JDBC驱动器 如果不能得到纯Java的驱动器,则可以使用前两种驱动器作为中间解决方案,因为它们比较容易获得,使用也较普遍。后面的例子就是用JDBC-ODBC Bridge驱动器完成的,12.2.1 JDBC-ODBC桥 JDBC的Driver类型,面向程序员的JDBC API可以完成以下主要任务 首先建立和数据源的连接 然后向其传送查询和修改等SQL命令 最后处理数据源返回的SQL执行的结果,12.2.1 JDBC-ODBC桥 JDBC API的任务,12.2.1 JDBC-ODBC桥 JDBC API中重要的接口和类,通过JDBC访问数据库,一个基本的JDBC程序开发包含如下步骤 设置环境,引入相应的JDBC类 选择合适的JDBC驱动程序并加载 分配一个Connection对象 分配一个Statement对象 用该Statement对象进行查询等操作 从返回的ResultSet对象中获取相应的数据 关闭Connection,12.2.1 JDBC-ODBC桥 JDBC程序开发步骤,12.2.1 JDBC-ODBC桥 设置环境,在本机上安装有关数据库软件 下载相应数据库驱动程序并安装 在Java程序中引入相应的类和包。任何使用JDBC的源程序都需要引入java.sql包,如必要的时候还需要装载相应的JDBC-ODBC驱动程序的包 import java.sql.*; import sun.jdbc.odbc.JdbcOdbcDriver;,通过JDBC访问数据库,通过JDBC-ODBC桥访问数据库 安装 Java 和 JDBC API 安装JDK的同时就自动安装了 安装数据库驱动程序 安装JDK的同时就自动安装了安装JDBC-ODBC桥驱动程序 安装 DBMS 建立一个数据库,并注册数据源,12.2.1 JDBC-ODBC桥 设置环境(续),1确定数据源名称和说明。依次进入本机的控制面板管理工具数据源(ODBC),弹出“ODBC数据源管理器”对话框,单击“系统DSN”选项卡,选择”Add”按钮,12.2.1 JDBC-ODBC桥 设置环境(续) 注册数据源,2. 单击“添加”按钮后弹出“创建数据源”对话框,选择“Microsoft Access Driver”选项。单击“完成”按钮后,弹出“ODBC Microsoft Access安装”对话框,在“数据源名”输入框中填写“PIMS”;在“说明”输入中填写“员工信息管理系统”;单击选择按钮,弹出“选择数据库”对话框,在目录中选定刚刚建好的数据库文件“PMS.mdb”,12.2.1 JDBC-ODBC桥 设置环境(续) 注册数据源,通过JDBC访问数据库,3. 单击“高级”按钮,弹出“设置高级选项”对话框,在“登录名称”文本编辑框中设定登陆名称为“Test”,在“密码”文本编辑框中设定密码为“1234”。依次确定返回到“ODBC 数据源管理器”对话框,这时可以发现“系统数据源”选项中增添了一个新确定的数据源“PIMS”,单击“ODBC Microsoft Access”对话框的“确定”按钮,就完成了数据源的注册,12.2.1 JDBC-ODBC桥 设置环境(续) 注册数据源,通过JDBC访问数据库,12.2.1 JDBC-ODBC桥 建立连接 装载驱动器,接下来要建立和DBMS的连接。包括两个步骤 装载驱动器,用Class.forName方法显式装载驱动程序,如:Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“); 以完整的Java类名字符串为参数,装载此类,并返回一个Class对象描述此类 执行上述代码时将自动创建一个驱动器类的实例,并自动调用驱动器管理器DriverManager类中的RegisterDriver方法来注册它 这里“sun.jdbc.odbc.JdbcOdbcDriver”是驱动器类的名字,可以从驱动程序的说明文档中得到 需要注意的是,如果驱动器类有可能不存在,使用此方法就可能会抛出ClassNotFoundException异常,因此需要捕获这个异常: try Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“); catch(ClassNotFoundException e) System.out.println(e.getMessage);,通过JDBC访问数据库,12.2.1 JDBC-ODBC桥 建立连接(续) 建立连接,建立与数据库的连接,调用DriverManager.getConnection()方法。例如,我们要连接上一节创建的Access数据库PIMS,语句如下: Connection con = DriverManager.getConnection(“jdbc:odbc:PIMS“, “test“,“1234“); 将返回与指定数据库建立的连接 该方法有三个字符串参数 第一个是JDBC URL,格式为 jdbc:子协议:子名称 Jdbc表示协议,JDBC URL 中的协议总是 jdbc; 子协议是驱动器名称; 子名称是数据库的名称,如果是位于远程服务器上的数据库,则还应该包括网络地址,/主机名:端口/数据库名 第二个是访问数据库所需的用户名 第三个是用户密码 Connection是一个接口,表示与指定数据库的连接 DriverManager类位于JDBC的管理层,作用于用户和驱动程序之间。它负责跟踪在一个系统中所有可用的JDBC驱动程序,并在数据库和相应驱动程序之间建立连接,通过JDBC访问数据库,12.2.1 JDBC-ODBC桥建立连接(总结),(一)建立ODBC数据源 (二)加载驱动 Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“); (三)连接数据库 Connection conn = DriverManager.getConnection( “jdbc:odbc:PIMS”,“用户名”,“密码“);,12.2.1 JDBC-ODBC桥建立连接(总结),(一)建立ODBC数据源 (二)加载驱动 Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“); (三)连接数据库 Connection conn = DriverManager.getConnection( “jdbc:odbc:PIMS”,“用户名”,“密码“);,12.2.1 JDBC-ODBC桥建立连接(实例),import java.sql.*; public class JDBCODBC public static void main(String args) try Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); /自带驱动文件 System.out.println(“数据库驱动加载成功!“); Connection cn; cn= DriverManager.getConnection(“jdbc:odbc:PIMS“,“sa“,“sa“); System.out.println(“数据库连接成功!“); conn.close(); catch (ClassNotFoundException e) e.printStackTrace(); catch (SQLException e) e.printStackTrace(); ,12.2.2 使用SQLJDBC驱动连接SQL Server数据库,一、连接SQL Server 2000 (一)下载并安装驱动SQL Server 2000 Driver for JDBC Service Pack 3.exe 下载网址:/en-us/download/details.aspx?id=4252 (二)将驱动jar包文件导入项目 右击当前项目 构建路径 添加外部归档,选中相应目录下的jar文件 C:Program FilesMicrosoft SQL Server 2000 Driver for JDBClib mssqlservice.jar,msutil.jar,msbase.jar (三)Java连接SQL Server2000为: Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”); /加载驱动 Connection cn= DriverManager.getConnection(“jdbc:microsoft:sqlserver :/数据库服务器地址:1433; DatabaseName=master“,”sa“,”密码“); /连接数据库 (四)配置SQL Server 2000服务器: 双身份认证模式 、TCP/IP登录协议、端口设定、打补丁SP4等。,12.2.2 使用SQLJDBC驱动连接SQL Server数据库,一、连接SQL Server 2000 实例代码 import java.sql.*; public class SQL2K public static void main(String args) String driverName = “com.microsoft.jdbc.sqlserver.SQLServerDriver“; String dbURL = “jdbc:microsoft:sqlserver:/:1433; DatabaseName=master“; String userName = “sa”, userPwd = “; Connection dbConn; try Class.forName(driverName); dbConn = DriverManager.getConnection(dbURL, userName, userPwd); System.out.println(“Connection Successful!“); dbConn.close(); catch (Exception e) e.printStackTrace(); ,12.2.2 使用SQLJDBC驱动连接SQL Server数据库,二、连接SQL Server 2005、2008 (一)下载并安装驱动Microsoft JDBC Driver 4.0 for SQL Server 下载网址:/zh-cn/download/details.aspx?id=11774 (二)将驱动jar包文件导入项目 Microsoft JDBC Driver 4.0 for SQL Serversqljdbc_4.0chs sqljdbc.jar、sqljdbc4.jar (三)Java连接SQL Server2005、2008为: 1. 通过登录账号登录 Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver“); DriverManager.getConnection(“jdbc:sqlserver:/localhost:1433; DatabaseName=master“,“sa“,“123456“); 2. windows身份认证模式 Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver“); DriverManager.getConnection(“jdbc:sqlserver:/localhost:1433; integratedSecurity=true;DatabaseName=master“); (四)配置SQL Server 2005、2008服务器: 双身份认证模式 、TCP/IP登录协议、端口设定、打补丁等。,12.2.2 使用SQLJDBC驱动连接SQL Server数据库,二、连接SQL Server 2005、2008 实例代码 import java.sql.*; public class Test public static void main(String args) String driverName = “com.microsoft.sqlserver.jdbc.SQLServerDriver“; /加载驱动 String dbURL = “jdbc:sqlserver:/localhost:1433; DatabaseName=master”;/连接 Connection dbConn; try Class.forName(driverName); dbConn = DriverManager.getConnection(dbURL,“sa“,“sa“); System.out.println(“Connection Successful!“); dbConn.close(); catch (Exception e) e.printStackTrace(); ,12.2.3 使用开源社区的JTDS数据库驱动类连接SQL Server、Sybase数据库,一、连接SQL Server 2005 (一)下载并安装驱动jTDS - SQL Server and Sybase JDBC driver 下载网址:/projects/jtds/ (二)将驱动jar包文件导入项目 jtds-1.3.0-distjtds-1.3.0.jar (三)Java连接SQL Server2005为: Class.forName(“net.sourceforge.jtds.jdbc.Driver”); /加载驱动 Connection conn = DriverManager.getConnection( “jdbc:jtds:sqlserver:/localhost:1433/master”,“sa”,“sa”); /连接 (四)配置SQL Server 2005服务器: 双身份认证模式 、TCP/IP登录协议、端口设定、打补丁等。,二、连接SQL Server 2005实例代码 import java.sql.*; public class JTDS public static void main(String args) throws ClassNotFoundException, SQLException Class.forName(“net.sourceforge.jtds.jdbc.Driver”); /加载驱动 System.out.println(“数据库驱动加载成功“); Connection conn = DriverManager.getConnection( “jdbc:jtds:sqlserver:/localhost:1433/master”,“sa”,“sa”); /连接 System.out.println(“数据库连接成功“); ,12.2.3 使用开源社区的JTDS数据库驱动类连接SQL Server、Sybase数据库,一、使用statement运行不带参数SQL语句 Statement是Java执行数据库操作的一个重要对象,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句。Statement对象,用于执行不带参数的简单SQL语句。用于执行静态SQL语句并返回它所生成结果的对象。 1. 创建 Statement 对象 建立了到特定数据库的连接之后,就可用该连接发送 SQL 语句。Statement对象用 Connection 的方法 createStatement 创建,如下列代码段中所示: Connection con = DriverManager.getConnection(url,“sa“, “); Statement stmt = con.createStatement(); 为了执行 Statement 对象,被发送到数据库的SQL语句将被作为参数提供给 Statement 的方法: ResultSet rs = stmt.executeQuery(“SELECT * FROM Table“);,12.3 操作数据库,一、使用statement运行不带参数SQL语句 2. 使用Statement对象的executeQuery方法进行查询 executeQuery方法用于产生单个结果集ResultSet的语句,该方法的参数一般是SELECT语句, ResultSet rs = stmt.executeQuery(“SELECT a, b, c FROM Table2“); 3. 使用方法 executeUpdate 用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句。例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。 conn.executeUpdate(“insert into table values()“); conn.executeUpdate(“update table set filed=value“); conn.executeUpdate(“delete from table where condition“); conn.executeUpdate(“create table or drop table“); 4. 关闭Statement对象和Connection对象,12.3 操作数据库,二、使用Preparedstatement执行带参数SQL语句 Preparedstatement表示预编译的SQL语句对象。SQL 语句被预编译并存储在PreparedStatement对象中。然后可以使用此对象多次高效地执行该语句。包含于 PreparedStatement 对象中的 SQL 语句可具有一个或多个 IN 参数。IN参数的值在 SQL 语句创建时未被指定。相反的,该语句为每个 IN 参数保留一个问号(“?”)作为占位符。每个问号的值必须在该语句执行之前,通过适当的setXXX 方法来提供。常用的设置 IN 参数值的设置方法有setShort、setString等,给定的实参值必须是与形式参数的SQL类型兼容。例如,如果 IN 参数具有 SQL 类型INTEGER,那么应该使用 setInt 方法。如果需要任意参数类型转换,使用 setObject 方法时应该将目标 SQL 类型作为其参数。,12.3 操作数据库,二、使用Preparedstatement执行带参数SQL语句 1. 创建 PreparedStatement对象 建立了到特定数据库的连接之后,就可用该连接发送 SQL 语句。 PreparedStatement对象用Connection对象的prepareStatement方法创建,如下列代码段中所示: Connection conn = DriverManager.getConnection(url,“sa“, “); PreparedStatement pstmt = conn. prepareStatement (); 2. 使用executeQuery()函数执行带参数查询语句 PreparedStatement psql; pSql = conn.prepareStatement(“select * from MyUsers where Sex=?“); /预处理 pSql.setString(1,“女“); res = pSql.executeQuery();,12.3 操作数据库,二、使用Preparedstatement执行带参数SQL语句 3.使用executeUpdate()函数执行带参数添加语句 pSql = conn.prepareStatement(“insert into MyUsers values(?,?,?,?,?)“); pSql.setString(1, “TestID“); pSql.setString(2, “测试用户“); pSql.setString(3, “TestPwd“); pSql.setString(4, “女“); pSql.setDate(5, java.sql.Date.valueOf(“2012-2-12“); pSql.executeUpdate(); 4.使用executeUpdate()函数执行带参数修改语句 pSql = conn.prepareStatement(“update MyUsers set Sex=? where UID=?“); pSql.setString(1, “男“); pSql.setString(2, “TestID“); pSql.executeUpdate();,12.3 操作数据库,二、使用Preparedstatement执行带参数SQL语句 5.使用executeUpdate()函数执行带参数删除语句 pSql = conn.prepareStatement(“delete from MyUsers where UID=?“); pSql.setString(1, “TestID“); pSql.executeUpdate();,12.3 操作数据库,Java操作数据库步骤总结,注册JDBC驱动程序 建立数据库连接 用Connection接口管理连接对象 DatabaseMetaData接口获得数据库元数据 构造 SQL 语句 提交查询 显示结果 关闭Statement和Connection 关于PreparedStatement对象,注册JDBC驱动程序,选择和安装JDBC驱动程序 安装Microsoft SQL Server 2000 JDBC驱动程序 为JDK在环境变量classpath中添加路径 在Eclipse中添加路径 在应用程序中指定JDBC驱动程序 public static Class. forName(String className) throws ClassNotFoundException 例如, Class.forName(“sun.jdbc.odbc.JdbcOdcDriver”); Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);,建立数据库连接,DriverManager类创建与指定数据库连接 public class DriverManager public static Connection getConnection(String url, String user, String password) throws SQLException public static Connection getConnection(String url) throws SQLException 例如, Connection connection = DriverManager.getConnection(“jdbc:odbc:student_access“); Connection connection = DriverManager.getConnection( “jdbc:microsoft:sqlserver:/localhost:1433; DatabaseName=student“, “sa“, “12345“);,用Connection接口管理连接对象,public interface Connection /创建执行SQL的语句对象,参数指定结果集属性 Statement createStatement() throws SQLException; Statement createStatement(int resultSetType, in

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论