精华内容
下载资源
问答
  • JDBC, 全称为Java DataBase Connectivity standard, 它是一个面向对象的应用程序接口(API), 通过它可访问各类关系数据库。JDBC也是java核心类库的一部分。JDBC的最大特点是它独立于具体的关系数据库ODB...
    目录
    1. ODBC 与 JDBC 是什么?
    2. 具体实例入门
    1、ODBC 与 JDBC 是什么?[Link]

    JDBC, 全称为Java DataBase Connectivity standard, 它是一个面向对象的应用程序接口(API), 通过它可访问各类关系数据库。JDBC也是java核心类库的一部分。

    JDBC的最大特点是它独立于具体的关系数据库。与ODBC (Open Database Connectivity)类似, JDBC API 中定义了一些Java类分别用来表示与数据库的连接(connections), SQL语句(SQL statements), 结果集(result sets)以及其它的数据库对象, 使得Java程序能方便地与数据库交互并处理所得的结果。使用JDBC, 所有Java程序(包括Java applications , applets和servlet)都能通过SQL语句或存储在数据库中的过程(stored procedures)来存取数据库。

    要通过JDBC来存取某一特定的数据库,必须有相应的JDBC driver,它往往是由生产数据库的厂家提供,是连接JDBC API与具体数据库之间的桥梁。

    通常,Java程序首先使用JDBC API来与JDBC Driver Manager交互,由JDBC Driver Manager载入指定的JDBC drivers, 以后就可以通过JDBC API来存取数据库。

    ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。 

    一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是FoxPro、Access还是Oracle数据库,均可用ODBC API进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。 

     

    2、具体实例入门

    这里提供一个具体的例子,step by step ,为刚刚接触数据库的人提供一个更为直观感性的认识。

    我们具体使用 java应用程序连接 mysql 数据库,整体步骤如下:

    1、java 开发环境的准备
    2、安装 java IDE以便开发 (如 Eclipse )
    3、安装 mysql 数据库
    4、下载 数据库对应的 jdbc driver
    5、将 jdbc driver 库导入到程序环境中
    6、连接测试 

    1、java 开发环境的准备:配置java开发环境——JDK的配置。 步骤网上很多比如:点这里

    2、搜索下载合适你系统(64bit/32bit)的IDE, 比如 Eclipse :点这里去搜索

    3、下载并安装mysql数据库,各个平台官方下载与安装教程 

      按照安装教程,设置好默认用户(root)的密码,安装完毕后,可以打开终端命令行登录数据库:(更加具体的使用,请访问 官方使用手册 )

    mysql -u root -p

          创建待会要测试的数据库, 并创建要测试的表:

    create database test;
    use test;
    create table temp(name varchar(20), password varchar(20));

    这时应该可以使用语句查看到你的表了:

    show tables;     // 查看当前数据库所有的表
    describe temp;  // 查看表的具体字段信息
    
    select * from temp;  // 查看表的数据

    4、下载mysql 提供的 jdbc driver ,点这里 ( Windows下载 (mysql-connector-java-5.1.40.zip) Linux下载: (mysql-connector-java-5.1.40.tar.gz))

         下载好后解压,任意路径都可以,不要以后随便给删掉就可以。

    5、将jdbc driver 库导入到Eclipse 环境中

        1)在 Eclipse 中建立用户库(以后不同的项目,要连接数据库,直接为工程加入这个用户库就好了):

       打开Eclipse,进入菜单windows->prefrences,进入Java->Build Path->user libraries,选择新建,命名为mysql,路径为:.../mysql-connector-java-5.X.XX-bin.jar

      2) 创建java project,命名为testmysql,右键项目名称,选择Build Path->Add libraries,从列表中选择user library,在next界面中选择上面部署的mysql安装包即可;

    6、现在可以开始写代码连接刚才的数据库了。在testmysql工程下新建class,命名为Test.java文件:

    public class Test {
    
        public static void main(String args[]) {
            try {
                Class.forName("com.mysql.jdbc.Driver"); // 加载MYSQL JDBC驱动程序
                System.out.println("Success loading Mysql Driver!");
            } catch (Exception e) {
                System.out.print("Error loading Mysql Driver!");
                e.printStackTrace();
            }
            try {
                Connection connect = DriverManager.getConnection(
                        "jdbc:mysql://localhost:3306/test", "root", "XXXXXXX"); //test 为你的数据库名称,XXXXXXX 这里改为你自己的密码
                System.out.println("Success connect Mysql server!");
                
           //插入一行数据 PreparedStatement Statement
    = connect .prepareStatement("INSERT INTO temp(name,password) VALUES(?,?)"); Statement.setString(1, "name3"); Statement.setString(2, "password3"); Statement.executeUpdate(); // 获取temp表的数据来打印 Statement stmt = connect.createStatement(); ResultSet rs = stmt.executeQuery("select * from temp");// temp 为表的名称 System.out.println("query result:"); while (rs.next()) { System.out.println(rs.getString("name")+" :"+rs.getString("password") ); } } catch (Exception e) { System.out.print("get data error!"); e.printStackTrace(); } } }

    运行程序,执行完毕后查看数据库,此时应该可以看到:

    mysql> select * from temp;
    +-------+-----------+
    | name  | password  |
    +-------+-----------+
    | name3 | password3 |
    +-------+-----------+
    1 row in set (0.00 sec)

     

    到这里,例子就讲完了,希望对初学者有所帮助 :)

     

    转载于:https://www.cnblogs.com/BensonLaur/p/5423065.html

    展开全文
  • java应用程序与数据库的连接

    千次阅读 2018-12-25 15:44:44
    java应用程序与数据库的连接  Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun ...

    java应用程序与数据库的连接 

    Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标1。它JDBC是面向关系型数据库的。 

    安装一个数据库,mysql等。。。再下载一个类似于mysql-connector的驱动包,JAVA通过jdbc访问mySQL数据库时需要该包支持,即在你的java工程中要把这个jar包添加进工程。最后将java应用程序与数据库连接,执行sql语句。 

     

    import java.sql.Connection;  
    import java.sql.DriverManager;  
    import java.sql.ResultSet;  
    import java.sql.SQLException;  
    import java.sql.Statement;  
      
      
    public class ConData {  
      
          
        public static void main(String[] args) {  
            //1.注册驱动   
            try {  
                Class.forName("com.mysql.jdbc.Driver");  
            } catch (ClassNotFoundException e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }  
           //2.建立连接  
            String url="jdbc:mysql://localhost:3306/mydata";  
            String user="root";             //输入用户名和密码  
            String password="111111";  
              
            try {  
                Connection conn=DriverManager.getConnection(url, user, password);           //将参数传递进去  
                //3.创建执行SQL语句的Statement  
                Statement st=conn.createStatement();                //java需要用到Satement来执行sql语句  
                  
                  
                //String sql="select * from student";               //查找student表中的数据  
                //String sql="insert into student(id,name,age)values(3,'eee',25)";          //插入一条数据  
                //String sql="delete  from student where id=1";                             //删除一条数据  
                String sql="update student set name='zhangsan' where id=2";                 //修改一条数据  
                //4.生成结果集  
                //数据的增删改用到的是executeUpdate,而查询用到的是executeQuery方法  
                //ResultSet rs=st.executeQuery(sql);  
                int i=st.executeUpdate(sql);                            //executeUpdate会返回几个int值,值是几行受到了影响  
                System.out.println(i);  
               //5.处理结果  
                /*while(rs.next()) 
                { 
                    System.out.println(rs.getInt("id")+" "+rs.getString(2)+" "+rs.getInt(3)); 
                }*/  
               //6.释放资源  
                //rs.close();  
                st.close();  
                conn.close();               //连接占用的资源最大  
                  
            } catch (SQLException e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }  
        }  
      
    }  

     

    展开全文
  •  数据库应用程序允许用户存储在数据库中的信息进行交互。数据库提供了信息的结构,供不同的应用程序共享。  Delphi 4支持关系数据库关系数据库以行和列即表格的形式来组织信息。当您设计一个数据库应用...

    转自:http://blog.csdn.net/shuaihj/article/details/168376


    第一章 设计数据库应用程序

      数据库应用程序允许用户与存储在数据库中的信息进行交互。数据库提供了信息的结构,供不同的应用程序共享。
      Delphi 4支持关系型数据库。关系型数据库以行和列即表格的形式来组织信息。当您设计一个数据库应用程序的时候,必须了解数据的结构,这样才能设计出一个合适的用户界面来显示数据库中的数据并且允许用户输入新的数据或者修改已有的数据。
    1.1 使用
       数据库构件选项板的“Data Access”页上的构件用于读写数据库,这些构件都借助于BDE(Borland Database Engine)来访问数据库中的信息。
       Delphi 4的不同版本所包含的数据库驱动程序有所不同。不过,所有的版本都包含了访问本地数据库的驱动程序,而Client/Server版本和Enterprise版本还 包含了SQL Links用于访问远程数据库。究竟使用本地数据库还是远程数据库取决于几个方面的因素,例如,表格中要存储多少数据,有多少用户要同时访问数据库,对数据库的性能有什么要求。
    1.1.1 本地数据库和远程数据库
       本地数据库位于本地磁盘或局域网上。如果有几个用户同时访问数据库,本地数据库采取基于文件的锁定策略,因此,本地数据库又叫基于文件的数据库。
       正因为本地数据库往往与数据库应用程序在同一个系统中,因此,访问本地数据库的速度比访问远程数据库的速度要快。
       本地数据库所能存储的数据没有远程数据库所能存储的数据多,在选择使用本地数据库还是远程数据库时必须考虑到这一点。
       使用本地数据库的应用程序也称为单层应用程序,因为数据库和应用程序在同一个文件系统中。
       典型的本地数据库有Paradox、dBASE、FoxPro和Access。
       远程数据库通常位于远程计算机上,用户通过SQL(Structured QueryLanguage)来访问远程数据库中的数据,正是基于这个原因,远程数据库有时候也叫SQL服务器或者叫RDBMS(Remote Database Management System)。
       远程数据库非常适合于几个用户同时访问,与那些基于文件锁定策略的本地数据库不同的是,远程数据库提供了基于事务的多用户支持。
       远程数据库所能存储的数据也比本地数据库多得多,甚至有时候数据并不 在一个服务器上,而是分布在几个服务器上。
       使用远程数据库的应用程序称为两层或多层应用程序,因为数据库和应用程序位于彼此不依赖的系统(层)中。
       典型的SQL服务器有Interbase、Oracle、Sybase、Informix、Microsoft SQLServer和DB2。
    1.1.2 数据库的安全性
       数据库往往包含了一些敏感信息。为了保护这些信息,不同的数据库有不同的保护策略。有的数据库如Paradox和dBASE,仅仅在表格级或字段级提供了安全保护,当一个用户试图访问受保护的表格时,他必须输入口令。当口令被认可,他只能看到允许的字段。
       大部分SQL服务器需要用户输入用户名和口令,一旦用户成功地登录到服务器,他所能看到的表格以及能进行的操作与他输入的用户名和口令有关。
       当您设计一个数据库应用程序的时候,必须考虑到数据库服务器需要什么样的安全措施。例如,如果不想让用户输入口令,您要么使用不需要口令的数据库,要么在程序中就把用户名和口令提供好,不过,在程序中提供用户名和口令容易泄密。
       如果需要用户输入口令,还必须考虑什么时候输入口令。如果正在使用一个本地数据库但希望将来能够平滑地过渡到一个大型的SQL数据库,最好在打开一个表之前提示用户输入口令,尽管现在还可能用不着口令。
      有的服务器可能需要多重口令,为了简化用户的操作,可以只要求用户输入一个主口令,其余的口令由程序自动提供。
       在多层的Client/Server应用程序中,可能要同时用到不同的安全模式,例如,用CORBA或MTS控制访问中间层,再让中间层去处理登录到远程数据库的细节。
    1.1.3 事务
       一个事务实际上是一组动作,这些动作必须在一个或几个表被提交之前成功地执行。如果有某个动作执行失败,所有的动作都将滚回(Undo)。
       大部分本地数据库不支持事务,但BDE驱动程序还是提供了有限的事务处理能力。而SQL数据库和ODBC兼容的数据库本身就提供了处理事务的能力。
    1.1.4 数据字典
       不管使用本地数据库还是远程数据库,应用程序都有权访问数据字典。数据字典提供了一个可自定义的不依赖于应用程序的存储区域,在这个区域中,可以创建扩展的字段属性集和描述数据的内容和外观。
       例如,如果要经常开发财务软件,可以创建几个特殊的字段属性集,以不同的格式显示金额。当在设计期创建数据集时,就不需要用对象观察器手工设置金额字段的显示格式,只要从数据字典中选择一个合适的属性集,让当前数据集中的金额字段共享它的属性。使用数据字典能保证数据具有一致的外观。
       在Client/Server环境下,数据字典可以位于远程服务器上。
    位于...DELPHI4/LIB目录中的DRINTF单元提供了访问数据字典的编程接口。
    1.1.5 完整性验证、存储过程和触发器
       所有的关系数据库都提供了存储和操作数据的功能。此外,有些数据库还提供了有助于保证数据完整的功能。
       一是完整性验证。这个功能提供了一种机制,能够防止两个表之间的Master/Detail关系被打断。当用户试图删除Master表中的一个字段时,如果这个字段被删掉将导致Detail表中出现孤立的记录,完整性验证功能要么不允许删除这个字段,要么把孤立的记录删掉。
       二是存储过程。存储过程实际上是一组SQL语句,它们放在SQL服务器上,这些SQL语句能够执行与数据库相关的任务,然后返回执行结果(记录集)。三是触发器。触发器也是一组SQL语句,这些语句将在响应某个命令时被触发执行。 
    1.2 数据库应用程序的体系结构
       一个数据库应用程序在逻辑上通常由两部分组成:一是数据库访问链路,二是用户界面,这就是数据库应用程序的体系结构。
    1.2.1 选择合适的体系结构
       建议最好把实现数据访问链路的构件与实现用户界面的构件分开,凡是数据访问构件最好放在数据模块上,这样能够保证应用程序具有一致的用户界面。如果把设计好的数据模块和窗体加到对象库中,在创建一个新的数据库应用程序时就不必什么都从头开始,这样不但能够提高编程效率,而且能够保证程序具有一致的风格。
       数据库应用程序的体系结构取决于是使用本地数据库还是远程数据库,取决于同时访问数据库的用户数以及数据库中需要存储哪些类型的信息。
       如果数据库中的信息不需要在几个用户之间共享,建议使用本地数据库,可以获得较快的访问速度,而且不必购买昂贵的服务器。不过,本地数据库所能存储的数据容量是有限的。
       如果需要存储很多的信息,最好改用远程数据库。不过,两层的体系结构需要SQL Links的支持,而SQL Links只有Delphi 4的Client/Server和Enterprise版本中才包含有。
       如果表与表之间的信息存在着比较复杂的关系,或者用户的数量增加了,建议您考虑多层的体系结构。与两层的应用程序相比。多层的应用程序多了一个中间层,中间层用于集中处理应用逻辑,这样,不同用途的客户程序可以使用相同的数据并且保证数据逻辑是一致的。同时,客户程序可以做得比较小巧,因为相当大的一部分工作由中间层去做了,这就是所谓的“瘦”客户。“瘦”客户更容易安装、配置和维护,因为它不需要包含数据库访问链路,不需要BDE。用多层的体系结构还有个好处是,可以把数据处理的任务分布在几个不同的系统中完成。当然,只有Client/Server和Enterprise版本才支持多层的体系结构。
       不过,层数越多,开发难度和费用就越大,因此,开发数据库应用程序时,最好先从单层开始,随着数据和用户的增加,再逐步平滑地过渡到多层体系结构。这里的关键是,一开始就要考虑到体系结构的可伸缩性,以最大限度地重用代码,使用以前的投资。
    1.2.2 可伸缩性
       BDE的结构以及数据模块的使用使可伸缩性成为可能。不管是单层、两层还是多层,都可以把用户界面与数据访问链路分开,如图1.1所示
      其中,窗体主要用于实现用户界面,它的主要部件是数据控件。数据模块主要用于实现数据访问链路,换句话说,就是引入数据集。数据集与数据控件之间通过TDataSource构件连接。把用户界面与数据访问链路分开的好处是,当应用程序以后过渡到多层体系结构时,只有数据模块上的数据集构件需要修改,而用户界面不需要变动。
       不过,有的用户界面可能需要相应地变动,例如,不同的数据库有不同的安全策略,有的数据库要求登录,而有的数据库可能不需要登录。
       BDE本身就具有可伸缩性,要把一个基于BDE的单层应用程序过渡到两层应用程序,这非常简单,只要修改数据集连接一个SQL服务器就行了。
       要把一个基于TClientDataSet构件的单层应用程序过渡到多层应用程序,也是非常容易的,因为TClientDataSet 同时支持从文件中存取数据和通过IProvider接口存取数据。
       如果计划过渡到三层的体系结构,可以先按单层或两层设计,除了要把用户界面分开外,还要把应用逻辑分开,因为应用逻辑最终要放到中间层即应用服务器上。在设计用户界面时,可以暂时用本地数据库提供数据,以后再改用TClientDataSet获取数据。
      图1.2 单层数据库应用程序的体系结构
    1.2.3 单层的数据库应用程序
       在单层的数据库应用程序中,应用程序和数据库共享同一个文件系统,它们使用本地数据库或文件来存取数据。 
       一个单层的数据库应用程序同时包含了用户界面和数据访问机制(可能是通过BDE,也可能是通过文件)。图1.2是单层数据库应用程序的体系结构。可以看出,既可以通过基于BDE的数据集构件从本地数据库中获取数据,也可以通过TClientDataSet构件从文件中获取数据。有一个共同点是,它们都通过TDataSource构件向用户界面提供数据。
    1.2.4 两层的数据库应用程序
       在两层的数据库应用程序中,客户程序提供用户界面,通过BDE从远程数据库服务器获取数据。图1.3是两层数据库应用程序的体系结构。
       图1.3 两层数据库应用程序的体系结构
       在这种模式下,所有的应用程序都是客户,客户通过BDE与远程数据库服务器交换数据。一个服务器可以同时处理许多客户的请求,协调访问并且更新数据。
    1.2.5 多层的数据库应用程序
       在多层的数据库应用程序中,客户程序、应用服务器和远程服务器分布在不同的机器上。其中,客户程序主要提供用户界面,它能够向应用服务器请求数据和申请更新数据。再由应用服务器(又叫Remote Data Broker)向远程数据库服务器请求数据和申请更新数据。图1.4是多层数据库应用程序的体系结构。
       图1.4 多层数据库应用程序的体系结构
       Delphi 4既可以创建客户程序,也可以创建应用服务器。客户程序通过IProvider接口与应用服务器通讯,通讯的协议可以是TCP/IP、DCOM、MTS或 CORBA。通讯协议与客户程序上的MIDAS连接构件有关,也与应用服务器上的数据模块有关。
       应用服务器通过IProvider接口有几种方式。如果应用服务器上包含TDataSetProvider构件或TProvider构件,IProvider接口将由这两个构件提供。如果应用服务器上没有TDataSetProvider构件和TProvider构件,IProvider接口由基于BDE的数据集构件提供。用TDataSetProvider构件或TProvider构件提供IProvider接口的好处是可以对IProvider接口进行控制。不过,不管哪种情况,IProvider接口都能在客户程序与应用服务器之间传递数据。
       在多层模式下,几个客户有可能同时与一个应用服务器通讯,应用服务器实际上充当了一个网关的作用。
    1.3 设计用户界面
       构件选项板的“Data Controls”页上的构件(也叫数据控件)用于显示数据库的数据,并且让用户编辑数据并保存到数据库中。数据控件构成了数据库应用程序的用户界面(UI)。
       数据控件通过TDataSource构件与数据库连接,TDataSource构件就好像用户界面与数据库之间的导管。在同一个窗体上,几个数据控件可以连接到同一个TDataSource构件,这几个数据控件能够保持同步,因为数据控件总是显示当前记录的数据。TDataSource构件一般放在数据模块上,与用户界面分开。
       数据控件有好几种,使用哪个数据控件取决于要显示的数据的类型,也取决于怎样组织这些信息、怎样让用户浏览信息和怎样让用户编辑数据的方式。
    1.3.1 显示单条记录和多条记录
       很多情况下,在同一个时刻应用程序只需要显示一条记录即当前记录的数据,事实上,构件选项板上的数据控件大多数是为显示当前记录的数据而设计的,如TDBText构件。
       如果要同时显示多条记录,就要用TDBGrid构件或TDBCtrlGrid构件。这两个构件既可以显示多条记录,也可以显示多个字段。
       两个表之间可以建立Master/Detail关系,相应地,客户程序可以用一个TDBText构件显示Master表的某个字段,用一个TDBGrid构件显示Detail表的多条记录。
    1.3.2 分析数据
       有些数据库应用程序并不是直接把数据库中的原始数据显示给用户,而是对数据进行分析、统计后以一种恰当的方式显示出来,这样能够帮助用户从中得出结论。
       构件选项板的“Data Controls”页上有一个TDBChart构件,这个构件能够以图表的形式对数据进行分析和显示。如果您购买的是Delphi 4的Client/Server版本,构件选项板上将有“Decision Cube”页。这一页上的构件能够对数据进行多维分析和统计,并以栅格和图表的形式显示出来。
    1.3.3 选择要显示的数据
       一个数据库应用程序往往只关心数据库中的一部分数据,比如,有的程序只关心一部分字段,而有的程序只关心一部分记录。
       至于怎样取出关心的数据,这取决于您使用的数据集构件。一个数据库应用程序中可能使用了几个数据集构件。Delphi 4支持六种类型的数据集。
       TTable构件。在逻辑上代表一个表。可以通过创建永久字段对象来调整字段的外观,可以增加Lookup字段和计算字段,可以设置过滤条件和范围来选择记录。
       TQuery构件。可以对数据库进行查询,并返回符合条件的记录。
       TStoredProc构件。用于执行SQL服务器上的存储过程。存储过程也可以返回符合特定条件的记录。
       TClientDataSet构件。能够从应用服务器检索数据,在本地内存中复制一个副本。正是基于这个原因,TClientDataSet能同时工作的记录数是有限的。用TClientDataSet 建立的客户程序可以做得很小,因为它不需要依赖于BDE,只需要DBClient.DLL文件。TClientDataSet既可以从应用服务器取得数据,也可以从文件中取得数据。
       TNestedTable构件。用于访问嵌套表中的记录。尽管Delphi 4不能直接创建Oracle8类型的表,但是可以显示和编辑嵌套表中的数据。
      自定义的数据集构件。它是从TDataSet继承下来的,与上述标准的数据集构件不同的是,自定义的数据集构件得自己解释记录缓冲区中的内容。对于自定义的数据集来说,仍然可以使用字段编辑器,也可以使用标准的数据控件显示数据。

    展开全文
  • 第一章数据库系统概论,第二章关系数据库,第三章关系数据库没计理论,第四章数据库设计,第五章关系数据库标准语言SQL,第六章数据库保护,第七章SQL Server 2000数据库技术,第八章ASP.NET数据库程序设计....
  • 第一章 设计数据库应用程序 数据库应用程序允许用户存储在数据库中的信息进行交互。数据库提供了信息的结构,供不同的应用程序共享。 Delphi 4支持关系数据库关系数据库以行和列即表格的形式来组织信息。...

    第一章 设计数据库应用程序

      数据库应用程序允许用户与存储在数据库中的信息进行交互。数据库提供了信息的结构,供不同的应用程序共享。
      Delphi 4支持关系型数据库。关系型数据库以行和列即表格的形式来组织信息。当您设计一个数据库应用程序时候,必须了解数据的结构,这样才能设计出一个合适的用户界面来显示数据库中的数据并且允许用户输入新的数据或者修改已有的数据。
    1.1 使用
       数据库构件选项板的“Data Access”页上的构件用于读写数据库,这些构件都借助于BDE(Borland Database Engine)来访问数据库中的信息。
       Delphi 4的不同版本所包含的数据库驱动程序有所不同。不过,所有的版本都包含了访问本地数据库的驱动程序,而Client/Server版本和Enterprise版本还 包含了SQL Links用于访问远程数据库。究竟使用本地数据库还是远程数据库取决于几个方面的因素,例如,表格中要存储多少数据,有多少用户要同时访问数据库,对数据库的性能有什么要求。
    1.1.1 本地数据库和远程数据库
       本地数据库位于本地磁盘或局域网上。如果有几个用户同时访问数据库,本地数据库采取基于文件的锁定策略,因此,本地数据库又叫基于文件的数据库。
       正因为本地数据库往往与数据库应用程序在同一个系统中,因此,访问本地数据库的速度比访问远程数据库的速度要快。
       本地数据库所能存储的数据没有远程数据库所能存储的数据多,在选择使用本地数据库还是远程数据库时必须考虑到这一点。
       使用本地数据库的应用程序也称为单层应用程序,因为数据库和应用程序在同一个文件系统中。
       典型的本地数据库有Paradox、dBASE、FoxPro和Access。
       远程数据库通常位于远程计算机上,用户通过SQL(Structured QueryLanguage)来访问远程数据库中的数据,正是基于这个原因,远程数据库有时候也叫SQL服务器或者叫RDBMS(Remote Database Management System)。
       远程数据库非常适合于几个用户同时访问,与那些基于文件锁定策略的本地数据库不同的是,远程数据库提供了基于事务的多用户支持。
       远程数据库所能存储的数据也比本地数据库多得多,甚至有时候数据并不 在一个服务器上,而是分布在几个服务器上。
       使用远程数据库的应用程序称为两层或多层应用程序,因为数据库和应用程序位于彼此不依赖的系统(层)中。
       典型的SQL服务器有Interbase、Oracle、Sybase、Informix、Microsoft SQLServer和DB2。
    1.1.2 数据库的安全性
       数据库往往包含了一些敏感信息。为了保护这些信息,不同的数据库有不同的保护策略。有的数据库如Paradox和dBASE,仅仅在表格级或字段级提供了安全保护,当一个用户试图访问受保护的表格时,他必须输入口令。当口令被认可,他只能看到允许的字段。
       大部分SQL服务器需要用户输入用户名和口令,一旦用户成功地登录到服务器,他所能看到的表格以及能进行的操作与他输入的用户名和口令有关。
       当您设计一个数据库应用程序的时候,必须考虑到数据库服务器需要什么样的安全措施。例如,如果不想让用户输入口令,您要么使用不需要口令的数据库,要么在程序中就把用户名和口令提供好,不过,在程序中提供用户名和口令容易泄密。
       如果需要用户输入口令,还必须考虑什么时候输入口令。如果正在使用一个本地数据库但希望将来能够平滑地过渡到一个大型的SQL数据库,最好在打开一个表之前提示用户输入口令,尽管现在还可能用不着口令。
      有的服务器可能需要多重口令,为了简化用户的操作,可以只要求用户输入一个主口令,其余的口令由程序自动提供。
       在多层的Client/Server应用程序中,可能要同时用到不同的安全模式,例如,用CORBA或MTS控制访问中间层,再让中间层去处理登录到远程数据库的细节。
    1.1.3 事务
       一个事务实际上是一组动作,这些动作必须在一个或几个表被提交之前成功地执行。如果有某个动作执行失败,所有的动作都将滚回(Undo)。
       大部分本地数据库不支持事务,但BDE驱动程序还是提供了有限的事务处理能力。而SQL数据库和ODBC兼容的数据库本身就提供了处理事务的能力。
    1.1.4 数据字典
       不管使用本地数据库还是程数据库,应用程序都有权访问数据字典。数据字典提供了一个可自定义的不依赖于应用程序的存储区域,在这个区域中,可以创建扩展的字段属性集和描述数据的内容和外观。
       例如,如果要经常开发财务软件,可以创建几个特殊的字段属性集,以不同的格式显示金额。当在设计期创建数据集时,就不需要用对象观察器手工设置金额字段的显示格式,只要从数据字典中选择一个合适的属性集,让当前数据集中的金额字段共享它的属性。使用数据字典能保证数据具有一致的外观。
       在Client/Server环境下,数据字典可以位于远程服务器上。
    位于...DELPHI4LIB目录中的DRINTF单元提供了访问数据字典的编程接口。
    1.1.5 完整性验证、存储过程和触发器
       所有的关系数据库都提供了存储和操作数据的功能。此外,有些数据库还提供了有助于保证数据完整的功能。
       一是完整性验证。这个功能提供了一种机制,能够防止两个表之间的Master/Detail关系被打断。当用户试图删除Master表中的一个字段时,如果这个字段被删掉将导致Detail表中出现孤立的记录,完整性验证功能要么不允许删除这个字段,要么把孤立的记录删掉。
       二是存储过程。存储过程实际上是一组SQL语句,它们放在SQL服务器上,这些SQL语句能够执行与数据库相关的任务,然后返回执行结果(记录集)。三是触发器。触发器也是一组SQL语句,这些语句将在响应某个命令时被触发执行。
    1.2 数据库应用程序的体系结构
       一个数据库应用程序在逻辑上通常由两部分组成:一是数据库访问链路,二是用户界面,这就是数据库应用程序的体系结构。
    1.2.1 选择合适的体系结构
       建议最好把实现数据访问链路的构件与实现用户界面的构件分开,凡是数据访问构件最好放在数据模块上,这样能够保证应用程序具有一致的用户界面。如果把设计好的数据模块和窗体加到对象库中,在创建一个新的数据库应用程序时就不必什么都从头开始,这样不但能够提高编程效率,而且能够保证程序具有一致的风格。
       数据库应用程序的体系结构取决于是使用本地数据库还是远程数据库,取决于同时访问数据库的用户数以及数据库中需要存储哪些类型的信息。
       如果数据库中的信息不需要在几个用户之间共享,建议使用本地数据库,可以获得较快的访问速度,而且不必购买昂贵的服务器。不过,本地数据库所能存储的数据容量是有限的。
       如果需要存储很多的信息,最好改用远程数据库。不过,两层的体系结构需要SQL Links的支持,而SQL Links只有Delphi 4的Client/Server和Enterprise版本中才包含有。
       如果表与表之间的信息存在着比较复杂的关系,或者用户的数量增加了,建议您考虑多层的体系结构。与两层的应用程序相比。多层的应用程序多了一个中间层,中间层用于集中处理应用逻辑,这样,不同用途的客户程序可以使用相同的数据并且保证数据逻辑是一致的。同时,客户程序可以做得比较小巧,因为相当大的一部分工作由中间层去做了,这就是所谓的“瘦”客户。“瘦”客户更容易安装、配置和维护,因为它不需要包含数据库访问链路,不需要BDE。用多层的体系结构还有个好处是,可以把数据处理的任务分布在几个不同的系统中完成。当然,只有Client/Server和Enterprise版本才支持多层的体系结构。
       不过,层数越多,开发难度和费用就越大,因此,开发数据库应用程序时,最好先从单层开始,随着数据和用户的增加,再逐步平滑地过渡到多层体系结构。这里的关键是,一开始就要考虑到体系结构的可伸缩性,以最大限度地重用代码,使用以前的投资。
    1.2.2 可伸缩性
       BDE的结构以及数据模块的使用使可伸缩性成为可能。不管是单层、两层还是多层,都可以把用户界面与数据访问链路分开,如图1.1所示
      其中,窗体主要用于实现用户界面,它的主要部件是数据控件。数据模块主要用于实现数据访问链路,换句话说,就是引入数据集。数据集与数据控件之间通过TDataSource构件连接。把用户界面与数据访问链路分开的好处是,当应用程序以后过渡到多层体系结构时,只有数据模块上的数据集构件需要修改,而用户界面不需要变动。
       不过,有的用户界面可能需要相应地变动,例如,不同的数据库有不同的安全策略,有的数据库要求登录,而有的数据库可能不需要登录。
       BDE本身就具有可伸缩性,要把一个基于BDE的单层应用程序过渡到两层应用程序,这非常简单,只要修改数据集连接一个SQL服务器就行了。
       要把一个基于TClientDataSet构件的单层应用程序过渡到多层应用程序,也是非常容易的,因为TClientDataSet 同时支持从文件中存取数据和通过IProvider接口存取数据。
       如果计划过渡到三层的体系结构,可以先按单层或两层设计,除了要把用户界面分开外,还要把应用逻辑分开,因为应用逻辑最终要放到中间层即应用服务器上。在设计用户界面时,可以暂时用本地数据库提供数据,以后再改用TClientDataSet获取数据。
      图1.2 单层数据库应用程序的体系结构
    1.2.3 单层的数据库应用程序
       在单层的数据库应用程序中,应用程序和数据库共享同一个文件系统,它们使用本地数据库或文件来存取数据。
       一个单层的数据库应用程序同时包含了用户界面和数据访问机制(可能是通过BDE,也可能是通过文件)。图1.2是单层数据库应用程序的体系结构。可以看出,既可以通过基于BDE的数据集构件从本地数据库中获取数据,也可以通过TClientDataSet构件从文件中获取数据。有一个共同点是,它们都通过TDataSource构件向用户界面提供数据。
    1.2.4 两层的数据库应用程序
       在两层的数据库应用程序中,客户程序提供用户界面,通过BDE从远程数据库服务器获取数据。图1.3是两层数据库应用程序的体系结构。
       图1.3 两层数据库应用程序的体系结构
       在这种模式下,所有的应用程序都是客户,客户通过BDE与远程数据库服务器交换数据。一个服务器可以同时处理许多客户的请求,协调访问并且更新数据。
    1.2.5 多层的数据库应用程序
       在多层的数据库应用程序中,客户程序、应用服务器和远程服务器分布在不同的机器上。其中,客户程序主要提供用户界面,它能够向应用服务器请求数据和申请更新数据。再由应用服务器(又叫Remote Data Broker)向远程数据库服务器请求数据和申请更新数据。图1.4是多层数据库应用程序的体系结构。
       图1.4 多层数据库应用程序的体系结构
       Delphi 4既可以创建客户程序,也可以创建应用服务器。客户程序通过IProvider接口与应用服务器通讯,通讯的协议可以是TCP/IP、DCOM、MTS或 CORBA。通讯协议与客户程序上的MIDAS连接构件有关,也与应用服务器上的数据模块有关。
       应用服务器通过IProvider接口有几种方式。如果应用服务器上包含TDataSetProvider构件或TProvider构件,IProvider接口将由这两个构件提供。如果应用服务器上没有TDataSetProvider构件和TProvider构件,IProvider接口由基于BDE的数据集构件提供。用TDataSetProvider构件或TProvider构件提供IProvider接口的好处是可以对IProvider接口进行控制。不过,不管哪种情况,IProvider接口都能在客户程序与应用服务器之间传递数据。
       在多层模式下,几个客户有可能同时与一个应用服务器通讯,应用服务器实际上充当了一个网关的作用。
    1.3 设计用户界面
       构件选项板的“Data Controls”页上的构件(也叫数据控件)用于显示数据库的数据,并且让用户编辑数据并保存到数据库中。数据控件构成了数据库应用程序的用户界面(UI)。
       数据控件通过TDataSource构件与数据库连接,TDataSource构件就好像用户界面与数据库之间的导管。在同一个窗体上,几个数据控件可以连接到同一个TDataSource构件,这几个数据控件能够保持同步,因为数据控件总是显示当前记录的数据。TDataSource构件一般放在数据模块上,与用户界面分开。
       数据控件有好几种,使用哪个数据控件取决于要显示的数据的类型,也取决于怎样组织这些信息、怎样让用户浏览信息和怎样让用户编辑数据的方式。
    1.3.1 显示单条记录和多条记录
       很多情况下,在同一个时刻应用程序只需要显示一条记录即当前记录的数据,事实上,构件选项板上的数据控件大多数是为显示当前记录的数据而设计的,如TDBText构件。
       如果要同时显示多条记录,就要用TDBGrid构件或TDBCtrlGrid构件。这两个构件既可以显示多条记录,也可以显示多个字段。
       两个表之间可以建立Master/Detail关系,相应地,客户程序可以用一个TDBText构件显示Master表的某个字段,用一个TDBGrid构件显示Detail表的多条记录。
    1.3.2 分析数据
       有些数据库应用程序并不是直接把数据库中的原始数据显示给用户,而是对数据进行分析、统计后以一种恰当的方式显示出来,这样能够帮助用户从中得出结论。
       构件选项板的“Data Controls”页上有一个TDBChart构件,这个构件能够以图表的形式对数据进行分析和显示。如果您购买的是Delphi 4的Client/Server版本,构件选项板上将有“Decision Cube”页。这一页上的构件能够对数据进行多维分析和统计,并以栅格和图表的形式显示出来。
    1.3.3 选择要显示的数据
       一个数据库应用程序往往只关心数据库中的一部分数据,比如,有的程序只关心一部分字段,而有的程序只关心一部分记录。
       至于怎样取出关心的数据,这取决于您使用的数据集构件。一个数据库应用程序中可能使用了几个数据集构件。Delphi 4支持六种类型的数据集。
       TTable构件。在逻辑上代表一个表。可以通过创建永久字段对象来调整字段的外观,可以增加Lookup字段和计算字段,可以设置过滤条件和范围来选择记录。
       TQuery构件。可以对数据库进行查询,并返回符合条件的记录。
       TStoredProc构件。用于执行SQL服务器上的存储过程。存储过程也可以返回符合特定条件的记录。
       TClientDataSet构件。能够从应用服务器检索数据,在本地内存中复制一个副本。正是基于这个原因,TClientDataSet能同时工作的记录数是有限的。用TClientDataSet 建立的客户程序可以做得很小,因为它不需要依赖于BDE,只需要DBClient.DLL文件。TClientDataSet既可以从应用服务器取得数据,也可以从文件中取得数据。
       TNestedTable构件。用于访问嵌表中的记录。尽管Delphi 4不能直接创建Oracle8类型的表,但是可以显示和编辑嵌套表中的数据。
      自定义的数据集构件。它是从TDataSet继承下来的,与上述标准的数据集构件不同的是,自定义的数据集构件得自己解释记录缓冲区中的内容。对于自定义的数据集来说,仍然可以使用字段编辑器,也可以使用标准的数据控件显示数据。

    展开全文
  • 了解构建使用Oracle数据库的.NET应用程序所涉及到的基本但不可或缺的过程本文涉及的下载·示例代码随着Microsoft的.NET框架的逐渐流行,许多开发人员迫切想了解关于将.NET应用程序与Oracle集成的最好的方式的信息—...
  • 第8章使用开发数据库应用程序 ;8.1 数据绑定; 第三个参数描述数据源中的数据成员它是必须能转化为标量值的字符串文字如使用时要根据表名称所选的列 表8-1 可用于类构造函数的第二个参数的类;8.1.1 简单数据绑定 简单...
  • 关系数据库 ...集成:可以使用共享数据库集成,即将多个应用程序的数据保存在同一个数据库中,使所有应用程序很容易使用彼此的数据。 关系数据库的缺点:阻抗失谐 关系模型和内存中的...
  • 首先说说数据库中的递归表,就用...这样的表其实就是一张递归表,通过观察地区ID地区ID_F的关系可以看出如下递归:广东->广州->天河,广西,顶级节点有两个,就是广东和广西。 当我们在程序中选择地区时,点击广东
  • 1.1.根据应用程序的需求描述模型 1.2.事物的节点,结构的关系(Nodes for Things, Relationships for Structure) 1.3.精细关系与一般关系(Fine-Grained versus Generic Relationships) 1.4.将事实建模为节点...
  • Equilibrium是具有实时数据库连接和配套Web应用程序的第一人称虚拟现实冒险游戏。 我们的Firebase连接MySQL数据库和Sequelize(用于MySQL的对象关系映射器)集成在一起。 Web应用程序的功能加密的C#数据紧密...
  • 杰里·戴维(JerryDavid)是我即将上线的网站的名称,这是一个由Web托管的综合关系数据库电视节目“ Seinfeld”有关。 如果还有其他书呆子想花时间开发“一无所有的网站”,我可能会对某人一起工作感兴趣。 ;...
  • 第一章 设计数据库应用程序 数据库应用程序允许用户存储在数据库中的信息进行交互。数据库提供了信息的结构,供不同的应用程序共享。 Delphi 4支持关系数据库关系数据库以行和列即表格的形式来组织信息。...
  • Java程序与数据库连接

    千次阅读 2019-06-19 20:59:59
    客户机服务器采用网络连接,客户机端应用程序按通信协议服务器端的数据库程序通信;数据库服务程序通过SQL命令与数据库管理系统通信。 Java程序与数据库连接方法有两种。一种是使用JDBC-ODBC桥接器与数据库连接...
  • 信封-快速发布基于PostgreSQL数据库的Web应用程序! 关于 有关快速概述,请参见文档“ What_is_Envelope.pdf”。 信封是Workflow Products,LLC的产品。 这是免费的PostgreSQL版本。 由于Envelope网站在浏览器中...
  • 默认情况下,它将特定于应用程序的数据(例如用户,存储的查询,配置等)存储在安装它相同的文件系统上的H2数据库中。 但是,一旦应用程序崩溃,就很难检索此数据(如果您编写了错误的sql查询以使其在数据上运行...
  • 数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。 数据库管理系统是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。它对数据库...
  • 原文: Introducing Cloud Spanner, a ...近日,谷歌正式宣布推出Cloud Spanner的Beta版,其为面向关键任务应用程序的全球分布式关系数据库服务。官方称其能让用户实现“鱼熊掌兼得”:该服务支持ACID事务和S...
  • NoSQL(最初指的是“非SQL”,“非关系”或“不仅是SQL”)数据库提供了一种存储和检索数据的机制,该机制以与关系数据库中使用的表格关系不同的方式建模。 这样的数据库自1960年代后期就已经存在,但是直到二十...
  • 关系数据库基础1数据库的几个概念数据库DB存放数据的仓库相互关联的数据集合//数据库管理系统DBMS管理数据库的计算机软件数据库系统DBS数据库管理系统 + 数据库 + 应用程序 + 用户DBA应用程序员终端用户1.关系数据库...
  • 该项目的目标是为卫生系统构建一个真实世界的数据库应用程序。 该软件将具有允许用户程序交互的界面。 然后,用户可以通过界面查看、编辑和对数据库执行一些其他命令。 该项目描述了一个现实世界的问题,并使用 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,090
精华内容 2,036
关键字:

数据库与应用程序关系