JDBC:通常翻译为“JAVA DATABASE CONNECTION”,JAVA数据库连接。
而实际上,JDBC早已被SUN注册为商标。
对于开发人员有什么好处?不需要了解各个不同的数据库,只需要了解JDBC接口,了解接口以后就能够使用各厂商的实现。
于是产生以下概念:Ø JDBC:本质就是SUN提出的一系列数据库相关的接口。
Ø 驱动程序:厂商对JDBC接口作出不同实现,所以不同数据库有不同的驱动(JAR包)。
一个程序是否使用接口,是面向过程与面向对象的一个重要标志!对于数据库,可以随时由SQLServer切换到Oracle,而JDBC相关代码并不会影响。
SUN利用接口的特点,完成JDBC的开发以及使用。
一般来讲,接口使用时,会涉及到以下三方Ø 接口的定义方Ø 接口的实现方(可能很多实现,以便切换)Ø 接口的调用方:接口a = new 实现类();Ø 如何访问数据库?只能通过SQL来访问(DML(增删改查)+DDL(创建)+DCL(权限))。
Ø JAVA程序如何访问数据库?只能通过操作SQL来访问数据库。
在JAVA,访问数据库只有一种技术,那就是JDBC。
(接口只需要一个!)什么是持久化:将一个东西永久保存。
为什么要对象持久化,即为什么要将对象的进行保存?因为关机就没了。
保存的方式(也是本书不叫数据库的原因)1、序列化(二进制文件,用记事本打开是乱码)2、文件(XML文件)<html><title>xxx</title></html>缺点:效率低,不安全,没有事务功能(查资料:什么是事务,示例:张三借钱给李四,张三钱减少和李四钱增加,这两个步骤要同时执行成功,或者同时失败,这种机制就叫事务)。
3、数据库:将对象所携带的数据保存到表中。
企业需要:高效率、高安全、事务控制、灵活计算…一般人开发不了,只能花钱购买。
所以数据库就是一套软件。
JAVA:10000个学生对象,找出其中有几种姓氏,各有多少个。
缺点:算法复杂,关键是效率低。
而这些缺点的解决就是数据库所提供的功能。
小结:数据库只是持久化方式的一种,持久化方式还有XML和序列化。
(比例:XML:DB = 2:8)基本概念Ø 数据库:相关数据的集合。
对于计算机,就是存储数据的文件。
Ø Database,简称:DB。
Ø 数据库管理系统:管理包含数据的文件以及其它相关文件的软件,就是DBMS,Database Manage System。
Ø 关系型数据库:保存各实体(与对象概念相同)以及实体之间关系的数据库。
通常以表格形式保存数据。
Relational DBMS,简称RDBMS。
根据将相关数据保存在一起方式的不同分为:Ø 层次模型:如:网页的节点之间的关系、目录之间的关系。
在后面将会讲到,所使用XML的就是一种流行的层次型数据库。
Ø 网状模型:Ø 关系型:以表格方式将数据分别保存,其中的内容包含实体和实体关系两种。
对比:保存班级和学生信息。
层次型:<school><class id="1" name="一班"><stu id="5001">张三</stu><stu id="5002">张三丰</stu></class><class id="2" name="二班"><stu id="5101">李四</stu><stu id="5102">杨五郎</stu></class></ school >层次:一个学校有多个班,每个班有多个学生,一个学生只能在一个班。
关系型:班级表:班级编号班级名称1 一班2 二班学生表:学号姓名班级编号5001 张三 15002 张三丰15101 李四 25102 李四娘2关键问题:从表格中看出哪些问题:有哪些实体(对象):班级实体:一班,二班学生实体:张三、张三丰、李四、李四娘有哪些实体关系:学生实体与班级实体有什么关系?通过学生表.班级编号,表示哪个学生在哪个班。
班级表:班级编号12上面的编号1代表一班,2代表二班。
所以这个数字代表了一个实体。
在DB中,这个班级编号很特殊,叫做主键,Primary key。
主键作用就是标识一个实体,即给一个对象设置一个编号。
一个人在社会上的主键:是身份证。
一个人在学校的主键:学号一个人在工作单位的主键:工号一个部门在公司的主键:部门编号啤酒在超市的主键:商品编号……为什么要设置主键:主要就是标识一个实体(对象),标识的目的就是让这个实体与众不同,与众不同的目标是计算机能够认别与区别。
没有编号,当班上有两个姓名相同的同学时,计算机就无法区别了。
学号姓名班级编号5001 张三 15002 张三丰15101 李四 25102 李四娘2一个实体使用了另一个实体的编号(学生使用了班级编号),那么这个被引用的编号叫外键,Foreign key。
外键一定是另一个实体的主键(外键=外面实体的主键)。
(外键相当于JAVA程序中的“引用”)。
小结:·数据库= 实体+ 关系·实体用主键来标识,关系用外键来反映。
DBMS:数据库管理系统,是一个特殊的软件。
如何操作?1、通过GUI界面,鼠标操作。
2、通过代码,操作数据库的代码叫做SQL,结构化查询语言,Structrure Query Language。
查询语言,是不是只能查询?并不是,它能操作数据库的一切。
一切:·增删改查:增加记录,删除记录……·建库,建表……·创建用户,设置权限:SQLServer默认用户是sa,system administrator。
根据功能SQL分类:·建库建表:DDL,数据定义语言。
如定义表格的结构。
·增删改查:DML,数据操作语言,在操纵数据。
·设置权限:DCL,数据控制语言,控制数据库的访问。
SQL叫结构化查询语言,指的是以查询为主的语言。
用SQL可以操作数据库,在JAVA中如果能使用SQL,就能使用数据库。
在JAVA中,使用SQL语言的技术叫JDBC,JAVA Database Connection,JAVA 数据库连接。
注意,JDBC也是SUN一个产品商标。
结构:JAVA程序→JDBC→SQL→数据库将数据保存到数据库中的软件,叫做基于数据库的业务系统。
关键字:关系型数据库层次型数据库XML数据库实体关系有哪些关系:一对一,一对多,多对多。
明天讲。
SUN利用接口的特点,完成JDBC的开发以及使用。
一般来讲,接口使用时,会涉及到以下三方Ø 接口的定义方Ø 接口的实现方(可能很多实现,以便切换)Ø 接口的调用方:接口a = new 实现类();Ø 如何访问数据库?只能通过SQL来访问(DML(增删改查)+DDL(创建)+DCL(权限))。
Ø JAVA程序如何访问数据库?只能通过操作SQL来访问数据库。
在JAVA,访问数据库只有一种技术,那就是JDBC。
(接口只需要一个!)如何进行JDBC开发?几个步骤:Ø 加载驱动Ø 指定连接信息Ø 登录,即与数据库连接Ø 最后要关闭Ø 加载驱动代码:Class.forName("net.sourceforge.jtds.jdbc.Driver");(在创建Driver类对象同时,利用其中的静态代码完成一系列复杂的操作,具体的理解就是所需的类全部加载)。
要点1、不同的数据库不同的驱动,即不同的jar包。
2、不同的数据库不同URLØ 指定数据库位置数据库分为本地数据库和网络数据库。
对于任何一个网络程序,必须有IP地址和端口。
IP地址指明是哪一台计算机,端口指明是这台计算机分配的什么资源。
计算机比喻为大楼,端口就是各房间(程序)的窗口(端口)。
对于数据库,还要指明是哪一个数据库。
因为同一台计算机有多个数据库。
另外,在这个世界上有很多种语言,在网络也有很多语言,这个语言就是协议。
Ø 代码:String url = "jdbc:jtds:sqlserver://127.0.0.1:1433/instant";jdbc:jtds:sqlserver:协议127.0.0.1:1433/instant:IP、端口、数据库名不管是哪种数据库,都必须包含以上4个部分。
现在,驱动有了,硬件条件具备;数据库的位置以及用户名和密码也有了,软件条件具备。
可以连接数据库。
在JAVA当中,一切皆对象。
所以连接数据库以后得到一个连接对象。
连接:Connection这个对象如何获得?驱动程序中有一个驱动管理器,对应DriverManger,由它提供。
Connection conn =DriverManager.getConnection(url, user, password);该方法执行成功以后,就返回一个Connection对象。
连接是一种宝贵的资源,所以必须珍惜。
要尽快释放。
因为任何一个数据库的连接数也不会太多,通常不能超过255。
通常在大型WEB应用中,通过连接池来解决这个问题。
SQL按有无返回数据分,分为两大数:增删改和查询。
强调:只有查询,才有返回数据库中数据!第一类:执行增删改以及DDL(createl,drop……)步骤Ø 定义sql字符串,即sql语句。
Ø 定义一个执行sql语句的对象,叫语句对象语句:Statement谁来创建这个对象?现在只有一个连接对象,只能是它。
Ø 固定使用st.executeUpdate()方法。
思考:执行了增删改语句以后,有没有什么东西可以返回的?因为总应该告诉你sql执行成功没?在JAVA程序中,一条语句执行成功,通常使用异常。
不需要返回true/false。
其实数据库要返回插入了多少条记录、或者删除、或者更新了多少条记录?第二类:返回表格中的数据同上。
Ø 固定使用st.executeQuery()方法。
Ø 查询返回的数据封装在结果集中。
结果集: ResultSet rsrs包含多个行的数据,每个行有多个列的数据,对应表格理解。
只能通过循环取出。