zoukankan      html  css  js  c++  java
  • 从零开始学Java 第20章 数据库编程

    第20章  数据库编程
    数据库技术如今发展十分迅速,已经广泛的应用于各个行业。尤其在金融、电信等业务系统中占有十分重要的地位。作为一门强大的编程语言,Java对数据库的支持也十分强大,通过JDBC工具可以方便的进行数据库编程。本章将会先简单的介绍数据库的知识,然后重点介绍Java中对数据库的支持。
    20.1  数据库基础知识
    也许读者可能并不了解数据库的知识,所以本书设置了本节。本节会对数据库进行简单的介绍,内容主要包括关系数据库、SQL语句以及MySQL数据库的基本知识。通过本节的学习,读者能对数据库的基本知识有一个大体的了解。
    20.1.1  关系数据库
    数据库是根据某种数据模型组织起来存放到硬盘等二级存储设备中的数据集合。这种数据集合应该具有如下特点:尽可能不重复,以最优方式为某个组织的服务及其数据提供独立于应用程序的管理和控制,主要包括增、删、改和查找等操作。实际上数据库系统是从文件系统进化而来的,它且恢指舸崭呒兜奈募低场
    关系数据库的主要特征是支持关系模型,包括数据结构、关系操作以及数据库完整型。关系模型具有以下特点:
    关系模型概念单一,实体之间的联系用关系表示。
    数据存储与存储路径对用户是不可见的。
    关系数据库语言是非过程化得。
    20.1.2  SQL语句
    SQL(Structured Query Language)结构化查询语言是数据库世界中的通用语言。通过它用户可以在不同的数据库系统中使用几乎相同的语句执行相同的操作。因为SQL语言已经被标准化,各种数据库都对其提供了支持。
    SQL语言的特点是简单易学、风格统一。利用简单的几个字母组合就能完成数据库所有的功能。在SQL语句运行环境中运行成功的语句几乎可以不加修改的嵌入到应用程序中。这样通过应用程序以及SQL对数据库的操纵能力可以很方便的建立数据库应用程序。
    1.创建数据库
    2.创建数据表
    3.插入数据
    4.查询语句
    5.更新语句
    6.删除语句

    20.1.3  MySQL数据库
    MySQL是一个非常流行的数据库管理系统,因为它是开源免费的而广受欢迎。MySQL以其体积小,速度快、成本低等特点,在许多中小型网站市场中占有比较大的市场份额,应用范围比较广。本书就是以MySQL作为数据库来进行实例的讲解。首先介绍它的下载和安装。
    1.下载MySQL数据库
    2.JDBC连接包的下载
    3.安装MySQL数据库

    20.2  JDBC
    JDBC(Java Database Connectivity,Java数据库连接)是一种用于执行SQL语句的API 。通过它,可以提供良好的跨平台性。即在不同的数据库开发时不必在意使用的是哪个数据库,这样程序员能把更多的精力放在业务流程的处理上,这样还提高了应用程序的可维护性和可扩展性。本节将会介绍JDBC的体系机构,以及如何通过JDBC完成数据库编程。
    20.2.1  JDBC体系结构
    开放数据库互连(ODBC)是为了实现异构数据库互连而由Microsoft公司推出的一种标准,它是一个单一的、公共的编程接口。ODBC提供不同的程序以存取不同的数据库,但只提供一种应用编程接口(API)给应用程序。用户使用这组ODBC提供的API即可完成程序的编写。ODBC的的体系结构如图20.11所示。
    20.2.2  JDBC基本元素
    Java的JDBC主要包括下面的部分:
    Driver Manager(java.sql.DriverManager)驱动程序管理器:它的作用是装载驱动程序,管理应用程序与驱动程序之间的连接。
    Driver(由驱动程序开发商提供)驱动程序:将应用程序的API请求转换为特定的数据库请求。
    Connection(java.sql.Connection)数据库连接:作用是将应用程序连接到特定的数据库
    Statement(java.sql.Statement)语句对象:在一个给定的连接中,通过它来执行一个静态的数据库SQL语句。
    ResultSet(java.sql.ResultSet)结果集:SQL语句执行完后,返回的数据结果集(包括行、列)。
    Metadata(java.sql.DatabaseMetadata; java.sql. ResultSetMetadata)
    关于查询结果集、数据库和驱动程序的元数据信息。
    20.3  通过JDBC连接数据库
    前面一节介绍了JDBC的基本知识。这一节将会介绍如何通过JDBC来连接连接数据库,进一步再执行数据库的一系列操作。使用JDBC连接数据库是非常简单的,通过本节的学习读者就可以写一些数据库应用程序了。
    20.3.1  载入驱动
    在前面已经介绍过,在使用JDBC连接数据库的时候需要首先加载相应的数据库。本小节就是介绍如何加载驱动。
    20.3.2  获得数据库连接
    前面介绍了如何加载驱动。驱动被加载后就可以通过java.sql.DriverManager类的getConnection来获得数据库连接了。下面是DriverManager提供的几个getConnection方法:
    public static Connection getConnection(String url)throws SQLException:建立到指定数据库的连接,数据库由url指定。
    public static Connection getConnection(String ur,Properties infol)throws SQLException:建立到指定数据库的连接,其总info用来保存连接参数,如用户名、密码等。
    public static Connection getConnection(String url,String user,String password)throws SQLException:建立到指定数据的连接,url指定要连接的数据库,user为用户名,password为密码。

    20.3.3  执行SQL语句
    连接上数据库后,就可以通过连接来获得一个语句对象来执行SQL语句了。下面的程序就是获得连接,产生一个语句对象,然后执行一系列的SQL语句。
    20.3.4  结果集
    SQLException:它的作用是执行指定的SQL语句,返回结果是一个ResultSet对象。ResultSet对象表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。
    默认的ResultSet对象不可更新,仅有一个向前移动的指针。因此,只能迭代它一次,并且只能按从第一行到最后一行的顺序进行。该指针的移动是通过next()方法来实现的:
    boolean next()throws SQLException:把指针移动下一行,ResultSet指针最初位于第一行,每次调用该方法后移一行,如果新的当前行有效则返回true否则返回false。
    取出每一行记录中的属性值可以有诸多的方法,常用的一一个方法是getString()方法:
    String getString(int columIndex) throws SQLException:其中位置columIndex从1开始,第一列的位置是1,依此类推。

    20.3.5  释放资源
    在数据库编程中,连接、Statement对象以及结果集ResultSet对象都是要占据系统大量的资源的,因此在使用完毕后一定要对资源进行释放操作。否则系统会在长时间运行的情况下资源耗尽而当机。最好的办法是资源释放的语句放入finally语句块中。这样在任何情况下资源都会被释放,系统才能流畅的运行。
    20.4  数据库的深入知识
    前面一节已经介绍了如何通过JDBC连接数据库。并能通过连接进行一系列的数据库操作,但这些仅仅是简单的应用,有时候可能需要进一步的改进。如数据库的用户名可能改变,密码也可能改变这时候总不能把应用程序整个的全编译一遍吧。还有就是结果集的使用的时候只能单向的移动,但是有时候需要对结果集进行反向囊贫绾问迪郑勘节将会对这些问题进行解决。
    20.4.1  Properties类的应用
    Properties类可以表示一个持久的属性集,这个持久集可以以文件的形式存在。Properties可保存在流中或从流中加载。属性列表中每个键及其键值都是一个字符串,必要的时候需要对其进行数据类型的转换。
    可以把数据库的连接信息、用户名以及密码放入这样一个属性集文件中做起配置文件。程序运行的时候从该文件获得相应的信息。这样需要修改这些信息的时候只需修改这个配置文件就可以了,不需要修改源程序。
    20.4.2  预编译语句
    前面执行SQL语句都是用Statement对象直接调用excute方法执行SQL语句。这样使用起来尽管是方便,但是有时候并不能满足要求。很简单的一个例子就是如果插入语句中值的属性比较多,拼写SQL语句就是件很复杂的事情。
    通过PreparedStatement来执行预编译语句,用户可以使用相同的语句,但是每次都能提供不同的参数。更重要的一点是使用预编译语句能带来性能上的提高。这是因为在PreparedStatement执行的时候,数据库不必编译就能直接运行该SQL语句。
    20.4.3  可滚动结果集
    前面介绍结果集只能从头到尾一个个的移动访问,有时候需要对指针进行更灵活操作。这时候原来的结果集就不能再满足要求,需要建立可滚动的结果集。
    可滚动结果集的生成需要使用特殊的Statement对象来产生。创建这些特殊的Statement对象的方法如下:
    Statement createStatement(int resultSetType,int resultSetConcurrency,
    int resultSetHoldability)throws SQLException

    20.5  连接池技术
    使用数据库的时候建立连接是消耗资源比较大的。尤其是基于数据库的WEB应用中,很可能短短的时间内就需要建立成百上千次连接,这很可能是系统性能的瓶颈所在。再就是在传统的模式中如果连接使用完成后必须要对其释放,如果资源未释放很可能会引发内存泄漏,使得系统最后崩溃掉。
    连接池技术的出现就是解决这些问题的。连接池就是一种把连接作为资源进行管理的一个实体。其思想是预先建立一些连接至于内存之中,当需要使用连接的时候,直接从内存中取出来就可以使用,使用完毕后只需要把它放回到连接池中即可。而连接的建立、断开都由连接池来管理。
    20.6  小结
    Java对数据库提供了良好的支持,其提供的JDBC机制,将程序与数据库的连接细节隐藏了起来,用户可以方便的与数据库进行交互。这方面原因是Java在web开发如此流行的重要因素。本章介绍了Java对数据库的支持系统,通过本章的学习,读者可以对Java的数据库编程有一个总体上的认识。如果读者有更深入的需求,可以参考一些更深入的书籍。

  • 相关阅读:
    AOP入门之静态代理
    C# 6 与 .NET Core 1.0 高级编程
    C# 6 与 .NET Core 1.0 高级编程
    C# 6 与 .NET Core 1.0 高级编程
    C# 6 与 .NET Core 1.0 高级编程
    C# 6 与 .NET Core 1.0 高级编程
    C# 6 与 .NET Core 1.0 高级编程
    C# 6 与 .NET Core 1.0 高级编程
    C# 6 与 .NET Core 1.0 高级编程
    C# 6 与 .NET Core 1.0 高级编程
  • 原文地址:https://www.cnblogs.com/yoogoo/p/2467288.html
Copyright © 2011-2022 走看看