第14章 数据库

  1 /*****************
  2 ***第14章 数据库
  3 *******知识点:
  4 **************1.JDBC简介
  5 **************2.JDBC驱动程序类型
  6 **************3.JDBC常用接口和类简介
  7 **************4.数据库操作
  8 **************5.事务
  9 **************6.连接池
 10 */
 11
 12
 13 import java.sql.Connection;
 14
 15 import java.sql.DriverManager;
 16
 17 import java.sql.PreparedStatement;
 18
 19 import java.sql.ResultSet;
 20
 21 import java.sql.SQLException;
 22
 23 public class test14{
 24     public static void main(String[] args) throws Exception{
 25         demoJDBCDescription();//jdbc简介
 26         demoJDBCDriver();//2.JDBC驱动程序类型
 27         demoJDBCInterfaceAndClass();//3.JDBC常用接口和类简介
 28         demoDataBaseOperator();//4.数据库操作
 29     }
 30
 31     /*
 32     *1.JDBC简介
 33     */
 34     public static void demoJDBCDescription(){
 35         //JDBC是Java应用与数据库管理系统进行交互的标准API,包括两个包:核心API---java.sql和扩展的API---javax.sql。
 36         //应用程序通过核心API的接口实现数据库连接和数据处理
 37     }
 38
 39     /*
 40     *2.JDBC驱动程序类型
 41     */
 42     public static void demoJDBCDriver(){
 43         //1.JDBC-ODBC桥
 44         //JDBC-ODBC桥是sun公司提供的,是jdk提供的的标准API. 这种类型的驱动实际是把所有JDBC的调用传递给ODBC ,
 45         //再由ODBC调用本地数据库驱动代码.由于JDBC-ODBC先调用 ODBC再由ODBC去调用本地数据库接口访问数据库.
 46         //所以,执行效率比较低,对于那些大数据量 存取的应用是不适合的.而且,这种方法要求客户端必须安装ODBC 驱动,
 47         //所以对于基于 internet ,intranet的应用也是不合适的
 48
 49         //2.本地API驱动
 50         //本地API驱动是直接把JDBC调用转变为数据库的标准调用再去访问数据库。这种驱动比起JDBC-ODBC桥执行效率大大提高了.
 51         //但是,它仍然需要在客户端加载数据库厂商 提供的代码库.这样就不适合基于internet的应用.
 52         //并且,他的执行效率比起3,4型的JDBC驱动还是不够高
 53
 54         //3.网络协议驱动
 55         //这种驱动实际上是根据我们熟悉的三层结构建立的. JDBC先把对数局库的访问请求传递给网 络上的中间件服务器.
 56         //中间件服务器再把请求翻译为符合数据库规范的调用,再把这种调用 传给数据库服务器.如果中间件服务器也是用java开法的,
 57         //那么在在中间层也可以使用1,2型 JDBC驱动程序作为访问数据库的方法.
 58         //网络协议驱动---------中间件服务器------------数据库Server
 59         //由于这种驱动是基于server的.所以,它不需要在客户端加载数据库厂商提供的代码库.
 60         //而且 他在执行效率和可升级性方面是比较好的.因为大部分功能实现都在server端,所以这种驱动 可以设计的很小,
 61         //可以非常快速的加载到内存中. 但是,这种驱动在中间件层仍然需要有配置 其它数据库驱动程序,
 62         //并且由于多了一个中间层传递数据,它的执行效率还不是最好.
 63
 64         //4.本地协议驱动
 65         //这种驱动直接把JDBC调用转换为符合相关数据库系统规范的请求.由于4型驱动写的应用可 以直接和数据库服务器通讯.
 66         //这种类型的驱动完全由java实现,因此实现了平台独立性. 本地协议驱动---------数据库Server
 67         //由于这种驱动不需要先把JDBC的调用传给ODBC或本地数据库接口或者是中间层服务器.所 以它的执行效率是非常高的
 68
 69         //所以在以后开发中推荐使用第四种
 70     }
 71
 72     /*
 73     *3.JDBC常用接口和类简介
 74     */
 75     public static void demoJDBCInterfaceAndClass(){
 76         //1.Driver接口————驱动程序,连接应用程序和数据库,用于读取数据库驱动器的信息,提供连接方法,建立访问数据库所用的Connection对象。
 77         //                    在加载某一Driver类时,它应该创建自己的实例并向DriverManager注册该实例
 78
 79         //2.DriverManager类————驱动程序管理器,管理一组Driver对象,对程序中用到的驱动程序进行管理,包括加载驱动程序、获得连接对象、向数据库发送信息
 80
 81         //3.Connection接口————连接Java数据库和Java应用程序之间的主要对象并创建所有的Statement对象。 不管对数据库进行什么样的操作,都需要创建一个连接,
 82         //                        然后通过这个连接来完成操作
 83
 84         //4.Statement类——————语句对象,代表了一个特定的容器,对一个特定的数据库执行SQL语句
 85
 86         //5.ResultSet接口——————用于控制对一个特定语句的行数据的存取,也就是数据库中记录或行组成的集合
 87
 88         //6.PreparedStatement类——————表示预编译的SQL语句的对象。SQL语句被预编译并存储在PreparedStatement对象中。然后可以使用此对象多次高效地执行该语句
 89
 90         //7.ResultSetMetaData接口——————结果集元数据,resultSet.getDataMeta获得的比较重要的是表的列名、列的属性等信息
 91
 92         //8.DatabaseMetadata接口——————数据库源数据,使用connection.getMetaData()获得了关于数据库整体的元数据信息
 93
 94         //9.CallableStatement接口————用于执行 SQL 存储过程的接口
 95     }
 96
 97     /*
 98     *4.数据库操作
 99     */
100     public static void demoDataBaseOperator() throws Exception{
101         //数据库操作步骤:
102         //1.注册驱动
103         //2.建立数据库连接
104         //3.创建数据库操作对象
105         //4.执行SQL
106         //5.处理结果集
107         //6.关闭JDBC对象
108
109         Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//注册驱动
110
111         String url = "jdbc:sqlserver://localhost:1433;DatabaseName=myerp";
112         String user = "sa";
113         String password = "123456";
114         Connection con = DriverManager.getConnection(url,user,password);//建立连接
115
116         System.out.println("演示Statement=========");
117         Statement stm = con.createStatement();//得到操作对象(不带参数)
118         String sql = "insert into t_Area(AreaID,ParentAreaID,AreaName) values(1,0,‘华南区‘)";//sql语句
119         stm.execute(sql);//执行sql语句
120
121         ResultSet rs = stm.executeQuery("select * from t_Area");//得到执行sql语句返回的数据集
122         while (rs.next()) {//遍历数据集
123             System.out.println("区域ID:" + rs.getInt("AreaID") + ",父区域ID:"
124                     + rs.getInt("ParentAreaID") + ",区域名:"
125                     + rs.getString("AreaName"));
126         }
127
128
129         System.out.println("演示PreparedStatement=========");
130         sql = "select * from t_Area where ParentAreaID=? ";
131
132         PreparedStatement pstm = con.prepareStatement(sql);//得到操作对象(带参数)
133         pstm.setInt(1,0);
134
135
136         rs = pstm.executeQuery();
137         while (rs.next()) {
138             System.out.println("区域ID:" + rs.getInt("AreaID") + ",父区域ID:"
139                     + rs.getInt("ParentAreaID") + ",区域名:"
140                     + rs.getString("AreaName"));
141         }
142
143
144
145         DatabaseMetaData meta = con.getMetaData();//得到数据库源数据对象
146         System.out.println("数据库版本:" + meta.getDatabaseProductVersion());
147         System.out.println("数据库名:" + meta.getDatabaseProductName());
148         System.out.println("数据库版本:" + meta.getDriverVersion());
149         System.out.println("数据库驱动名:" + meta.getDriverName());
150
151
152         ResultSetMetaData rsmeta = (ResultSetMetaData) rs.getMetaData();//得到结果集数据对象
153
154         System.out.println("字段个数:"+rsmeta.getColumnCount());
155
156         for(int i = 1;i<=rsmeta.getColumnCount();i++){
157             System.out.println("字段名字:"+rsmeta.getColumnName(i));//从1开始  注意
158             System.out.println("字段JDBC类型:"+rsmeta.getColumnType(i));
159             System.out.println("字段数据库类型:"+rsmeta.getColumnTypeName(i));
160         }
161
162         meta.close();
163         rsmeta.close();
164         rs.close();
165         stm.clost();
166         pstm.close();
167         con.close(); //关闭连接
168
169         //依次将DatabaseMetaData、ResultSetMetaData、
170         //      ResultSet、Statement、PreparedStatement、Connection对象关闭,释放所占用的资源
171
172         //执行存储过程就不演示了。具体找度娘
173     }
174
175     /*
176     *5.事务
177     */
178     public static void demoTransation(){
179         //事务:就是一组操作数据库的动作集合
180         //其中事务必须服从ACID原则
181         //    1.原子性(atomicity)————表示事务执行过程中的任何失败都将导致事务所做的任何修改失效
182         //    2.一致性(consistency)————当事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的状态
183         //    3.隔离性 (isolation)————隔离性表示在事务执行过程中对数据的修改,在事务提交之前对其他事务不可见
184         //    4.持久性(durability)————持久性表示当系统或介质发生故障时,确保已提交事务的更新不能丢失
185
186         //JDBC 事务是用 Connection 对象控制的。JDBC Connection 接口( java.sql.Connection )提供了两种事务模式:自动提交和手工提交。
187         //java.sql.Connection 提供了以下控制事务的方法:
188         //    public void setAutoCommit(boolean)
189         //    public boolean getAutoCommit()
190         //    public void commit()
191         //    public void rollback()
192
193         //推荐前台调用存储过程,在后台的存储过程里面实现事务即可。不要将事务放在前台执行
194         //注意:JDBC事务的范围局限于一个数据库连接,不能跨越多个数据库
195     }
196
197     /*
198     *6.连接池
199     */
200     public static void demoConnectionPool(){
201         //数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,
202         //只需从“缓冲池”中取出一个,使用完毕之后再放回去
203
204
205     }
206     /*部分资料参考于博客:http://blog.csdn.net/hu_shengyang/article/details/6290029
207                           http://blog.csdn.net/csh624366188/article/details/7305672/
208                           http://www.blogjava.net/chunkyo/archive/2007/01/16/94266.html
209     */
210 }
时间: 2024-10-03 13:40:09

第14章 数据库的相关文章

2015-08-25 php大力力016 兄弟连高洛峰php教程(2014年 14章数据库章节列表)

2015-08-25 php大力力016 兄弟连高洛峰php教程(2014年 14章数据库章节列表) [2014]兄弟连高洛峰 PHP教程14.1.1 复习数据库  15:58 [2014]兄弟连高洛峰 PHP教程14.1.2 phpMyAdmin的使用 15:59 [2014]兄弟连高洛峰 PHP教程14.1.3 php访问MySQL 17:27 [2014]兄弟连高洛峰 PHP教程14.1.4 在PHP脚本中操作MySQL数据库1  17:38 [2014]兄弟连高洛峰 PHP教程14.1.

Python for Infomatics 第14章 数据库和SQL的应用一(译)

14.1 什么是数据库 数据库一种存储结构数据的文件.绝大多数数据库类似字典——映射键和值的关系.最大的区别是数据库是保存在硬盘或其它永久性的存储上,所以在程序结束后它仍然存在.而保存在内存中的字典容量受限于计算机的内存配置,所以数据库可以比字典存储更多的数据. 类似字典,数据库软件在插入和访问数据时非常迅速,即使是庞大的数据.通过创建数据索引,数据库软件维持它的性能,并允许计算机快速跳至一个特定入口. 目前有很多不同目的的数据库系统,包括:Oracle, MySQL, 微软的SQL Serve

Python for Infomatics 第14章 数据库和SQL应用三(译)

14.5 SQL 总结 到目前为止,我们在Python示例程序中使用了SQL,并且涉及了许多SQL基础.在这一小节中,我们特别审视SQL语言,并对其语法进行回顾. 虽然有很多不同的数据库供应商,但因SQL语言是标准化的,所以我们可以在不同的数据库系统中方便地移植. 一个关系数据库是由表.行和列构成的.列通常拥有一种类型属性,比如文本,数字或数据.当我们创建一张表,我们需要指定列的名称和类型: CREATE TABLE Tracks(title TEXT, plays INTERGER) 我们用S

Python for Infomatics 第14章 数据库和SQL应用四(译)

14.6 用数据库爬取Twitter 在本节中,我们将创建一个简单的爬虫程序.它将仔细搜索Twitter账号,并建立一个账号数据库.注意:在运行这个程序时要非常小心.如果你抓取太多的数据或者长时间运行这个程序,最终可能造成Twitter账号被关闭. 任何爬虫程序都存在一个问题,即它需要能够关闭和重启很多次数,并且你不想丢失你至今为止获取的数据.你不想每次重启都重头获取所有数据,所以我们要存储已获得的数据,这样我们的程序可以备份,并且从它停止的地方重新开始. 我们将从获取某人的Twitter好友和

MySQL性能调优与架构设计——第 14 章 可扩展性设计之数据切分

第 14 章 可扩展性设计之数据切分 前言 通过 MySQL Replication 功能所实现的扩展总是会受到数据库大小的限制,一旦数据库过于庞大,尤其是当写入过于频繁,很难由一台主机支撑的时候,我们还是会面临到扩展瓶颈.这时候,我们就必须许找其他技术手段来解决这个瓶颈,那就是我们这一章所要介绍恶的数据切分技术. 14.1 何谓数据切分 可能很多读者朋友在网上或者杂志上面都已经多次见到关于数据切分的相关文章了,只不过在有些文章中称之为数据的 Sharding.其实不管是称之为数据的 Shard

【书评:Oracle查询优化改写】第14章 结尾章

[书评:Oracle查询优化改写]第14章 结尾章 一.1  相关参考文章链接 前13章的链接参考相关连接: [书评:Oracle查询优化改写]第一章 http://blog.itpub.net/26736162/viewspace-1652985/ [书评:Oracle查询优化改写]第二章 http://blog.itpub.net/26736162/viewspace-1654252/ [书评:Oracle查询优化改写]第三章 http://blog.itpub.net/26736162/v

3.30日第八次作业,第14章,采购管理,15章,信息文档和配置管理

3.30日第八次作业,第14章,采购管理,15章,信息文档和配置管理   第14章.采购管理1.采购管理包括哪些过程?(记)P382-383 答:1).编制采购计划.2).编制询价计划.3).询价.招投标.4).供方选择.5).合同管理.6).合同收尾. 2.编制采购计划过程的成果是什么?P386-387 答:1).采购管理计划.2).采购工作说明书. 3.判断:每个采购工作说明书都来自于项目范围基准.P387 答:是的. 4.结合P388页表14-1,工作说明书应该清楚地描述哪些内容?P388

第14章 可迭代的对象、迭代器和生成器

#第14章 可迭代的对象.迭代器和生成器 # 迭代是数据处理的基石.扫描内存中放不下的数据集时,我们要找到一种惰性获取数据项的方式,即按需一次获取一个数据项.这就是迭代器模式(Iterator pattern). # 所有生成器都是迭代器,因为生成器完全实现了迭代器接口. # 迭代器用于从集合中取出元素:而生成器用于"凭空"生成元素. # 14.1 Sentence类第1版:单词序列 # 示例 14-1 sentence.py:把句子划分为单词序列 import re import r

设计模式@第14章:享元模式

第14章:享元模式 一.展示网站项目需求 小型的外包项目,给客户 A 做一个产品展示网站,客户 A 的朋友感觉效果不错,也希望做这样的产品展示网站,但是要求都有些不同: 有客户要求以新闻的形式发布 有客户人要求以博客的形式发布 有客户希望以微信公众号的形式发布 二.传统方案解决网站展现项目 直接复制粘贴一份,然后根据客户不同要求,进行定制修改 给每个网站租用一个空间 方案设计示意图 14.3 传统方案解决网站展现项目-问题分析 需要的网站结构相似度很高,而且都不是高访问量网站,如果分成多个虚拟空