精华内容
下载资源
问答
  • 实验1 建立数据库

    2019-05-17 08:29:46
    实验名称:建立数据库。 实验内容:在SQL Server 的环境中建立数据库和维护数据库。 实验目的:理解SQL Server 数据库的存储结构,掌握SQL Server数据库的建立方法和维护方法。 实验方法:在SQL Server 环境下用...

    实验名称:建立数据库。
    实验内容:在SQL Server 的环境中建立数据库和维护数据库。
    实验目的:理解SQL Server 数据库的存储结构,掌握SQL Server数据库的建立方法和维护方法。
    实验方法:在SQL Server 环境下用CREATE DATABASE命令建立数据库。
    实验者何小变
    实验要求
    1.根据具体要求建立如下3个数据库:
    (1)创建数据库test1(使用一个数据文件和一个日志文件),要求指定一个数据文件、一个事务日志文件,并把它们安排在不同的硬盘上。
    (2)创建数据库test2(使用多个数据文件和多个日志文件),要求使用3个数据文件和两个日志文件,主数据文件是列表中的第一个文件或用关键词PRIMARY指定(文件扩展名:主数据文件使用.mdf,次数据文件使用.ndf,事物日志文件使用.ldf)。
    (3)创建数据库test3(使用文件组),要求使用3个文件组(含主文件组,即默认的文件组),每个文件组包含两个数据文件,并且每个文件组要安排在不同的硬盘上。
    代码实现
    (1)

    **以上代码必须在英文全角的状态下输入**
    CREATE DATABASE test1
    ON
    (NAME=TEST1,
    FILENAME='D:/HE/DATA.mdf',   //数据文件的存储位置。
    SIZE=5,  //可带单位可不带,默认单位为MB。
    MAXSIZE=10,
    FILEGROWTH=5)      //存储空间的增长量,最大不能超过MAXSIZE-SIZE。
    LOG ON
    (NAME=TEST_LOG,
    FILENAME='D:/HE/LOG.ldf',  //此次是单引号引出存储地址。
    SIZE=10MB,
    MAXSIZE==20MB,
    FILEGROWTH=10MB)
    

    (2)

    **以上代码必须在英文全角的状态下输入**
    CREATE DATABASE test2
    ON
    PRIMARY
    (NAME=TEST2,
    FILENAME='D:/HE/DATA.mdf',
    SIZE=5,
    MAXSIZE=10,
    FILEGROWTH=5),  //记得后面有一个英文逗号。
    (NAME=TEST2_1,
    FILENAME='D:/HE/DATA.ndf',
    SIZE=5,
    MAXSIZE=10,
    FILEGROWTH=5),   //记得后面有一个英文逗号。
    (NAME=TEST2_2,
    FILENAME='D:/HE/DATA.ndf',
    SIZE=5,
    MAXSIZE=10,
    FILEGROWTH=5)
    LOG ON 
    (NAME=TEST2_LOG1
    FILENAME='D:/HE/LOG.ldf',
    SIZE=10,
    MAXSIZE=20,
    FILEGROWTH=5),   //记得后面有一个英文逗号。
    (NAME=TEST2_LOG2
    FILENAME='D:/HE/LOG.ldf',
    SIZE=10,
    MAXSIZE=20,
    FILEGROWTH=5)
    
    

    (3)

    CREATE DATABASE test3
    ON
    (NAME=TEST3,
    FILENAME='D:/HX/DATA1.mdf',
    SIZE=5,
    MAXSIZE=10,
    FILEGROWTH=5),
    (NAME=TEST3_1,
    FILENAME='D:/HX/DATA1.ndf',
    SIZE=5,
    MAXSIZE=10,
    FILEGROWTH=5),   //记得后面有一个英文逗号。
    FILEGROUP TEST3-1
    (NAME=TEST3_2,
    FILENAME='D:/HX/DATA2.mdf',
    SIZE=5,
    MAXSIZE=10,
    FILEGROWTH=5),   //记得后面有一个英文逗号。
    NAME=TEST3_3,
    FILENAME='D:/HX/DATA2.ndf',
    SIZE=5,
    MAXSIZE=10,
    FILEGROWTH=5),   //记得后面有一个英文逗号。
    FILEGROUP TEST3-2
    (NAME=TEST3_4,
    FILENAME='D:/HX/DATA3.mdf',
    SIZE=5,
    MAXSIZE=10,
    FILEGROWTH=5),   //记得后面有一个英文逗号。
    NAME=TEST3_5,
    FILENAME='D:/HX/DATA3.ndf',
    SIZE=5,
    MAXSIZE=10,
    FILEGROWTH=5)
    
    

    2.修改建立的test1数据库,为之添加一个5MB大小的新数据文件。

    ALTER DATABASE test1
    ADD FILE
    (
    NAME =TEST101,
    FILENAME='D:/HE/DATA.ndf',
    SIZE = 5MB)
    

    3.修改建立的test2数据库,将其中的主数据文件增加5MB的存储空间。

    ALTER DATABASE test2
    MODIFY FILE
    (
    NAME =TEST2,
    FILEGROWTH=5)
    

    4.删除建立的数据库test1.

    DROP DATABASE test1
    
    展开全文
  • 知识点:数据库表的相关概念、创建数据库表的方法、设计数据库表、向数据库表中插入数据、建立不同数据库表之间的关系、删除数据库表。 1、数据表相关的一些概念 1.1 数据库里的数据是如何保存的? 数据库...

    知识点:数据库表的相关概念、创建数据库表的方法、设计数据库表、向数据库表中插入数据、建立不同数据库表之间的关系、删除数据库表。

     

    1、数据表相关的一些概念

     

    1.1 数据库里的数据是如何保存的?

            数据库到底是怎么存储数据的?比如要把学生信息存储到数据库里,能把学生塞进数据库吗?肯定是把学生的数据信息抽象出来,把一些重要信息以文字或数字的形式保存到数据库中去。

           具体是怎么保存的,有点类似于excel,是用一张二维表的形式来进行数据保存的。这里有两个名词需要注意,行(称之为记录),列(称之为字段)。表中一条记录表示现实中的一个实体(学生)。所以以后的重点就是围绕这个表来进行设计,设计他的列。这个就是存储数据的概念。

     

     

      展开全文
    • 如何用VB建立数据库

      千次阅读 2007-06-17 23:31:00
      但即便如此,数据库应用程序的开发仍然算得上是VB编程中的难点,这是因为你不仅要熟悉VB中关于数据库编程方面的知识(当然这是十分简单的)还要了解数据库的知识。所以我们先介绍一下数据库的基本知识,算是学习...
      最佳答案
      Visual Basic作为应用程序的开发“利器”也表现在数据库应用程序的开发上,它良好的界面和强大的控件功能使数据库编程变得简单多了。但即便如此,数据库应用程序的开发仍然算得上是VB编程中的难点,这是因为你不仅要熟悉VB中关于数据库编程方面的知识(当然这是十分简单的)还要了解数据库的知识。所以我们先介绍一下数据库的基本知识,算是学习数据库编程前的热身运动吧!

      一、热身运动
      首先需要声明是,我们这里介绍的数据库知识都是指的关系数据库。所谓关系数据库就是将数据表示为表的集合,通过建立简单表之间的关系来定义结构的一种数据库。
      不管表在数据库文件中的物理存储方式如何,它都可以看作一组行和列,与电子表格的行和列类似。在关系数据库中,行被称为记录,而列则被称为字段。下面是一个客户表的例子。
      表1 客户表

      客户号 姓名 地址 城市 街道 邮编
      1723 Doe John 1234 Ffth Avenue New York NY 1004
      3391 Smith Mary 9876 Myrtle Lavee Bosten MA 6078
      3765 Blasel Mortimer 2296j River Road peoria IL 7011

      此表中每一行是一个记录,它包含了特定客户的所有信息,而每个记录则包含了相同类型和数量的字段:客户号、姓名等等。
      表 是一种按行与列排列的相关信息的逻辑组,类似于工作单表。
      字段 数据库表中的每一列称作一个字段。表是由其包含的各种字段定义的,每个字段描述了它所含有的数据。创建一个数据库时,须为每个字段分配一个数据类型、最大长度和其它属性。字段可包含各种字符、数字甚至图形。
      记录 各个客户有关的信息存放在表的行,被称为记录。一般来说,数据库表创建时任意两个记录都不能相同。
      键 键就是表中的某个字段(或多个字段),它(们)为快速检索而被索引。键可以是唯一的,也可以是非唯一的,取决于它(们)是否允许重复。唯一键可以指定为主键,用来唯一标识表的每行。例如,在前面的例子中,客户标识号 (客户号) 是表的主键,因为客户号唯一地标识了一个客户。
      关系 数据库可以由多个表组成,表与表之间可以以不同的方式相互关联。例如,客户数据库还可以有一个包含某个客户的所有定单的表。它只用“客户号”字段来引用该定单的客户,而不在定单表中的每项重复所有客户信息,如下表所示:
      表2 定货表

      定货 客户号 日期 内容 数量
      14764 3391 2/23/94 27 $22.95
      14932 3391 3/17/94 46 $9.57
      15108 8765 2/15/96 27 $22.95

      在这个表中,客户号字段引用了客户表中的 客户号字段,从而把定单和客户联系起来了。可以看到,客户 3391 (Mary Smith) 在 94 年 2 月 23 日订购了 27 项,在 94 年 3 月 17 日订购了 46 项。用来建立关系的键叫做外部键,因为它与“外部”表(客户表)的主键关联。
      一对多和多对多关系 上表中的关系类型叫做一对多关系,因为一个客户可以发出多个定单,而某个特定的定单只能是一个客户所发。也可以建立多对多的关系。例如,列出所有可以销售的项(存货)的盘存表:
      表3 盘存表

      内容 描述 供应商 费用 盘存
      27 Straw Hat Garden Supply Co. $14.00 50
      46 Garden gloves Garden Supply Co. $4.50 75
      102 hanging floral industries $6.00 137

      从盘存表中,可以看到在客户和存货项之间存在多对多的关系。也就是说,一个客户可以订购多个存货项,而一个存货项又能够被多个客户订购。多对多关系是通过两个独立的一对多关系来定义的,公共的“多”表包含了两个其它表的外部键。在该例中,定货s 表与 盘存 表(通过 “内容”)与 Customer 表(通过 客户号)都相关联。通过这三个表,我们可以看到,Mary Smith (客户号 3391) 订购了 Straw Hat (“内容” 27) 和Garden Gloves (“内容” 46),而 Mary Smith (客户号 3391) 和 Mortimer Blaselflatz (客户号 8765) 都订购了Straw Hat (“内容” 27)。如果把客户表和盘存表的相关字段与 定货表的“定货”字段联结起来,建立一个“关联”表,那么这个关系就更清楚了。
      表4 关联表:按客户号和内容排序

      定货号 客户号 姓名 内容 描述
      14764 33391 Smith Mary 27 Straw Hat
      14932 33391 Smith Mary 46 Garden Gloves
      15168 8765 Blaselfatz Mortimer 27 Straw Hat

      规范化 数据库设计者的任务就是组织数据,而组织数据的方法,应能消除不必要的重复,并为所有必要信息提供快速查找路径。为了达到这种目标而把信息分离到各种独立的表中去的过程,叫作规范化。
      规范化是用许多指定的规则和不同级别的范式来进行规范的复杂过程。该过程的研讨已超出了本文的范围。但是,大多数简单数据库的规范化可以用下面简单的经验规则来完成:包含重复信息的表必须分成独立的几个表来消除重复。
      例如,使学生和课程对应的学生数据库,包含了下表所示的信息。
      表5

      学生 课程 描述 教授
      1 4 Introduction to Physiology Dawson
      2 3 Applied Basketweaing Carruth
      3 1 Physics for Short-定货 cooks Adms
      4 2 Introduction to Physiology Dawsons

      如果有选学了十二门课程的 1000 个学生,每门课程的说明和教师将显示100多次— 对选了那门课程的每个学生都要重复一次。要避免这种低效率,应当把表分成两个独立的表来规范化,一个用来表示学生,另一个用来表示课程,如表6,表7所示。

      学生 课程
      1 4
      2 3
      3 1
      4 4
      课程 描述 教授
      1 Physics for Short-定货 cooks Adms
      2 Counterculture Sociology Beckely
      3 Applied Basketweaing Carruth
      4 Introduction to Physiology Dawsons

      表6
      表7


      现在表被规范化了,所以,要改变特定课程的课程描述或“数据”,只要改变一个记录就可以了。
      以上是关于数据库的基本知识,这是学习数据库编程所必须的。虽然数据库技术作为一门学科,其深度和广度不是这点篇幅能描述的,但作为入门和简单数据库编程应该是足够了。
      好了,下面我们就可以开始练练了。我们经常遇到数据库系统是登记系统,不管你是在单位,或是参加什么组织,登记是免不了的,而且它的结构比较简单,我们就以一个登记系统为例吧。分析一下该系统所涉及到的数据。

      二、磨刀不误砍柴功
      对于登记,要跟踪的信息包括:
      ● 姓名 ● 性别
      ● 籍贯 ● 年龄
      ● 出生年月 ● 单位
      ● 地址 ● 邮政编码
      ● 电话 ● 传真
      当然,可以简单地创建一个表,使得上述的每个数据项对应一个字段。
      现在需要给表指派主键,用以唯一标识每一条记录,在登记表中分别添加登记号作为唯一键,这样就保证数据库中的任两条记录都不同了。
      对数据库作出以上分析后,我们就可以开始建立数据库了。

      三、建营扎寨
      在这里我们学习怎样建立数据库,首先需要确定要建立数据库的类型。在Visual Basic中通过数据访问控件或数据访问对象(DAO)可以访问下列数据库:
      1. JET数据库,即Microsoft Access
      2. ISAM数据库,如:dBase,FoxPro等
      3. ODBC数据库,凡是遵循ODBC标准的客户/服务器数据库。如:Microsoft SQL Server、Oracle
      一般来说,如果要开发个人的小型数据库系统,用Access数据库比较合适,要开发大、中型的数据库系统用ODBC数据库更为适宜。而dBase和FoxPro数据库由于已经过时,除非特别的情况,否则不要使用。在我们的例子中,当然选用Access数据库了。建立Access数据库有两种方法:一是在Microsoft Access中建立数据库。点击“新建”按钮就可以建立新的表了(如图1)。这里我们主要介绍第二种方法:使用可视化数据管理器,不需要编程就可创建数据库。可视化数据管理器是一个非常有用的应用程序,它是VB企业版和专业版附带的,在目录..DevStudiovbsamplesVisdata下,其界面如下图。
      点击菜单“文件”项下“新建”子项“Microsoft ACCESS”子项的“版本7.0 MDB”项。在弹出窗口中输入新建数据库的名称“登记”,出现下面图3所示窗口:
      要生成新的表,右键单击数据库窗口弹出菜单,然后选择“新表”命令,在随后出现的“表结构”对话框中建立所要的字段。每次向表中加入新的字段,单击“增加字段”按钮,会出现图4 的“增加字段”对话框。
      “增加字段”对话框中的选项如表10所示,根据字段的类型,有些选项是无效的,无法读取。
      在我们建立的登记数据库中,各个字段的类型如表11。

      要注意的是,由于字段登记号用来唯一标志记录的,因此,它不能由用户输入。所以在定义该字段时需要定义为Long数据类型,“自动生成字段”项有效,并选中这一项。这样当用户每输入一条新记录时,系统就会在该字段上自动输入一个与其它记录不同的值。
      在ACCESS数据库中,关键字是用索引实现的,作为编程人员在对表类型的记录集编程时,只需调用索引名。在查询时,Rushmore技术自动用索引信息优化查询。完成表定义后,点击“增加索引”按钮,弹出如图5所示窗口。
      在窗口中右边有三个选项,其意义如表 12。
      添加索引对话框选项
      完成之后如图6。
      当然,学会数据库的建立也并非一朝一夕的事,读者不妨多练习一下。下面你就可以运行VB开始我们的编程了。

      四、千里相会
      Visual Basic 数据库应用程序有三个部分,如图7所示。
      用户程序是程序员开发的,也是我们即将用VB来编写的部分。数据库引擎是数据库驱动程序,使用它程序员可以用统一的格式访问各种数据库,不管这个数据库是本地的 Visual Basic 数据库,还是所支持的其它任何格式的数据库格式,所使用的数据访问对象和编程技术都是相同的。数据库则是我们上面完成的部分。从这个结构可以看出用户与正在访问的特定数据库无关。那我们在用VB编写数据库程序时,就需要使程序能够访问指定的数据库。
      如果是简单的数据库应用,可以使用 Data 控件来执行大部分数据访问操作,而根本不用编写代码。与 Data 控件相捆绑的控件自动显示来自当前记录的一个或多个字段的数据。

      DATA数据控件
      属性
      CONNECT属性 指定打开的数据库类型,并且包括参数,如用户和口令等。
      例如:
      打开Access数据库(缺省)
      CONNECT=“ACCESS”
      打开ODBC数据库
      CONNECT=“ODBC;DATABASE=??;UID=??;PWD=??;DSN=??”
      DATABASENAME属性 确定数据控件访问哪一个数据库。
      对于多表数据库它为具体的数据库文件名,例如:ACCESS数据库
      DATABASENAME=“D:...DEMO.MDB"
      对于单表数据库它为具体的数据库文件所在的目录,而具体文件名放在RECORDSOURCE属性中,例如:访问FOXPRO数据库文件D:FOXDEMO.DBF
      DATABASENAME=“D:FOX”
      RECORDSOURCE=“DEMO”不带文件扩展名
      RECORDSOURCE属性
      确定数据控件的记录集,即:所要访问的数据内容。它可以是一个表名、存储查询名或SQL语句。例如:访问Register表所有数据 :
      RECORDSOURCE=“Register”访问RC表中1973年以前出生的数据:
      RECORDSOURCE=“SELECT *FROM Register WHERE [BIRTHDAY]<#1/1/1973#"
      注意:当我们在运行时修改了该属性后,需要调用REFRESH方法刷新记录集。

      方法
      REFRESH方法 当我们在运行时修改了Record-
      Source属性后,需要调用该方法刷新记录集。
      UPDATERECORD方法 将绑定在数据控件上的控件的数据写入数据库中。即:当我们修改了数据后调用该方法确定修改。
      CANCELUPDATE方法 将数据库中的数据重新读到绑定在数据控件上的控件中。即:当我们修改了数据后调用该方法放弃修改。

      事件
      VALIDATE事件 当我们移动记录集记录指针时发生。例如:我们将记录集记录指针从A移动到记录B时当产生VALIDATE事件时,记录指针仍在记录A上。
      Sub XXXX_Validate(Action As integer,Save As integer)
      其中:
      Action 指出如何产生了该事件,如:移动,增加,查询等。
      Save 表示是否保存已修改的数据。当我们修改了绑定在数据控件的数据,又没有UPDATERECORD,则移动指针时,Save=True。如果在事件中令Save=False,则放弃修改。
      例如:

      Sub XXXX_Validate(Action As integer,Save As integer)
      If Save then
      I= MsgBox("Dada changed,Save?",vbYesNo)
      If I = vbNo then
      Save = False
      End if
      End if
      End Sub

      Reposition事件 当我们移动记录集指针时发生。例如:我们将记录集记录指针从A移动到记录B 时,当产生Reposition事件时,记录指针已移动到B上。
      通常我们在该事件中显示当前的指针位置。例如:
      Sub XXXX_Reposition()
      XXXX.Caption=??
      XXXX.RecordSet.AbsolutePosition + 1
      End Sub

      了解了DATA控件之后我们就可以连接数据库了。现在我们可以编写一个应用程序。因为虽然我们建立了Register数据库,但是数据库中却没有数据,我们程序的目的就是向数据库中输入数据。它的运行情况如图8。
      各个文本框正好对应着表Register的各个字段,在文本框中输入数据,点击“增加”按钮,就完成了一条记录的输入。我们看一下,DATA控件是怎样和数据库连接起来的,各个文本框又是怎样和DATA控件捆绑起来的。
      在DATA控件的CONNECT属性中,选中“ACCESS”项,在DatabaseName属性中,输入“C:TEMP登记.mdb”,在RecordSource属性中,选中“Register”,这样就完成了数据库与DATA控件的连接,也就是完成了与应用程序的连接。

      数据库中各个字段又是怎样和文本框连接起来的呢?在VB中,我们可以将普通控件绑定在数据控件上,来完成自动地显示、更新记录集的数据。常用的可绑定的控件有:Label,Text,checkBox,Image等。通过设置这些控件的DataSource和DataField属性来完成绑定。

      DataSource 属性 表示绑定到哪一个数据控件上,程序中我们可能使用多个数据控件。
      DataField 属性 表示绑定到记录集的哪一个记录上。
      现在我们需要把Text1与表“登记”中的姓名字段连接起来。完成DATA控件的连接之后,在Text1控件的DataSource属性中,选中“Data1”,在DataField属性中,选中“姓名”值。用同样的方法,将各个文本框分别绑定到对应的字段上,就完成了文本框的捆绑。
      下面我们编写两个按钮命令,完成其相应的操作了。喂!别着急,还有一个重要的对象没讲呢!
      当应用程序启动时,Data 控件被自动地初始化。如果 Connect、DatabaseName、Options、RecordSource、Exclusive、ReadOnly 和 RecordsetType 属性是合法的, Microsoft Jet 数据库引擎就会试图创建一个新的基于这些属性的 Recordset 记录集对象。Recordset 对象可以表示表中的记录或者作为查询结果的记录,使用 Recordset 对象可以在记录一级上对数据库中的数据进行处理。这在数据库编程中是一个十分重要的,也是比较复杂的对象。
      Recordset 对象有三种类型:表、动态集、快照,它们之间存在明显的区别。
      表类型的 Recordset 对象是指当前数据库中的表在创建表类型的记录集时,数据库引擎打开的表。后续的数据操作都是直接对表进行的。只能对单个的表打开表类型的记录集,而不能对联接或者联合查询打开表类型的记录集。与其它类型的 Recordset 对象相比,表类型的搜索与排序速度最快。
      动态集类型的 Recordset 对象可以是本地的表,也可以是返回的行查询结果。它实际上是对一个或者几个表中的记录的一系列引用。可用动态集从多个表中提取和更新数据,其中包括链接的其它数据库中的表。动态集类型具有一种与众不同的特点:不同数据库的可更新联接。利用这种特性,可以对不同类型的数据库中的表进行可更新的联接查询。动态集和它的基本表可以互相更新。如果动态集中的记录发生改变,同样的变化也将在基本表中反映出来。在打开动态集的时候,如果其他的用户修改了基本表,那么动态集中也将反映出被修改过的记录。动态集类型是最灵活的Recordset 类型,也是功能最强的。不过,它的搜索速度与其它操作的速度不及表类型的 Recordset。
      快照类型的 Recordset 对象包含的数据是固定的,它反映了在产生快照的一瞬间数据库的状态。从 Microsoft Jet 数据源得到的快照是不可更新的,从开放数据库互连 (ODBC) 数据源得到的某些快照是可以更新的,这取决于数据库系统本身的能力。与动态集类型和表类型的 Recordset 对象相比,快照的处理开销较少。因此,它执行查询和返回数据的速度更快,特别是在使用 ODBC 数据源时。快照类型保存了表中所有记录的完整复本,因此,如 果记录的个数很多,快照的性能将比动态集慢得多。为了确定快照与动态集哪一个更快,可以先以动态集方式打开记录集,然后再以快照方式打开它。
      具体使用什么记录集,取决于需要完成的任务:是要更改数据呢,还是简单地查看数据。例如,如果必须对数据进行排序或者使用索引,可以使用表。因为表类型的 Recordset 对象是做了索引的,它定位数据的速度是最快的。如果希望能够对查询选定的一系列记录进行更新,可以使用动态集。如果在特殊的情况下不能使用表类型的记录集,或者只须对记录进行扫描,那么使用快照类型可能会快一些。
      一般来说,尽可能地使用表类型的 Recordset 对象,它的性能通常总是最好的。
      为选择特定的 Recordset 类型,把 Data 控件的RecordsetType属性设成:

      RecordSet记录集属性
      BOF属性 当记录集记录指针指向第一条记录时返回True
      EOF属性 当记录集记录指针指向最后一条记录时返回True
      AbsloutePosition属性 返回当前记录集记录指针,第一条记录为0,是只读属性
      Bookmark属性 String类型,返回或设置当前记录集记录指针的书签,是可读写属性。每一条记录都有自己唯一的书签,它与记录在记录集中的顺序无关。将Bookmark属性存放到变量中,后面可以通过将该变量赋值给Bookmark属性,并返回到这个记录。
      注意:程序中使用BookMark属性重定位记录指针,而不能使用Abslouteposition
      NoMatch属性 当我们使用Find方法查询时如果未找到则返回True。常与BookMark属性同时使用。
      例如:查找[NAME]字段中第一个姓李的人

      Dim S As String
      With XXXX.RecordSet
      S = .BookMark
      .FindFirst "[NAME] Like ’李*’"
      if .NoMatch then
      MsgBox "数据未找到“
      .BookMark = S
      End if
      End With

      记录集方法
      AddNew方法 向记录集增加一条新记录
      Delete方法 从记录集中将当前记录删除。在删除后常使用MoveNext方法移动指针。
      例如:

      With XXXX.RecordSet
      .Delete
      .MoveNext
      if .EOF then .MoveLast
      End With

      MoveXXXX方法
      MoveFirst 将记录集指针移动到第一条记录上
      MoveLast 将记录集指针移动到最后一条记录上
      MovePrevious 将记录集指针移动到前一条记录上
      MoveNext 将记录集指针移动到下一条记录上
      FindXXXX方法
      FindFirst在记录集中查询符合条件的第一条记录
      FindLast 在记录集中查询符合条件的最后一条记录
      FindPrevious 在记录集中查询符合条件的前一条记录
      FindNext 在记录集中查询符合条件的下一条记录
      好了,有了这么充分的知识了,编写两个按钮命令简直是小菜一碟,先来试一下,添一个“增加”命令按钮吧。

      Private Sub Command1_Click()
      Data1.Recordset.AddNew
      End Sub

      哇!怎么这么简单,再看一下“删除”命令按钮

      Private Sub Command2_Click()
      Data1.Recordset.Delete
      Data1.Recordset.AddNew
      End Sub

      就这样行了吗?运行程序吧,OK!一切正常,迫不及待地输入一条记录,点击“增加”按钮,怎么?出问题了!因为你只有在进行了AddNew方法后才可以输入数据,好吧,在窗口的初始化时就增加一条新记录吧。

      Private Sub Form_Initialize()
      Data1.Recordset.AddNew
      End Sub
      输入完了数据,我们打算退出程序,很自然的我们执行关闭窗口操作,就顺利地结束了输入工作。真的很顺利吗?打开数据库,看看数据库中的数据,我们发现刚才输入的最后一条记录没有存入数据库中。这个很好解释,每当我们调用AddNew方法时,它就将输入的记录存入数据库中,而当我们关闭窗口时,刚输入的记录并没有保存到数据库中,那么在关闭窗口之前对DATA控件进行一次刷新就可以将数据存入数据库中了。

      Private Sub Form_QueryUnload(Cancel As Inte ger, UnloadMode As Integer)
      Data1.Refresh
      End Sub

      到了这里,我们似乎可以稍稍轻松了一点,这个窗口的功能差不多完成了。但是我不得不给你提出一个忠告:在数据库系统中,应尽量将错误在应用级上处理。这句话看起来似乎有点抽象,实际上用在这个程序中就简单多了。在表Register中,我们将出生日期定义为Date/Time类型,如果在程序运行时,在该字段对应的文本框中输入的不是Date/Time格式,在向数据库提交数据时会出现什么情况呢?数据库会向用户报告错误信息。然而这样对应用程序并不好,这样的错误应该由用户程序处理,而不是交给数据库去处理,所以在数据提交之前就应该检查该字段的输入是否合法。

      Private Sub Text3_LostFocus()
      If IsDate(Text3.Text) Or Text3.Text = "" Then ’检查是否输入合法数据
      Exit Sub
      End If
      MsgBox ("输入错误,请输入你出生的年月日!")
      ,将选取不合法的数据,以便重新输入,并使控制焦点不动
      Text3.SetFocus
      Text3.SelStart = 0
      Text3.SelLength = Len(Text3.Text)
      End Sub

      上面虽是应用程序处理错误的一个小例子,可是这种在应用级处理错误的思想是十分重要的。

      五、寻寻觅觅
      在数据库管理系统中,输入和查询就象两个孪生姐妹不可或缺,下面将介绍如何创建查询窗口。查询窗口的设计分为两部分:查询结果和查询条件。查询结果是指用户所需要的数据,它包括根据查询条件查询出来的记录,但并非表中每个字段里的数据都需要提供给用户。比如在我们这个例子中,登记表中的登记号的值是用户不感兴趣的,所以在查询结果中,我们不希望显示RegID字段的值。查询条件是用户提出的查询要求。比如在我们这个系统中,可以有姓名条件,当用户想知道某个人的具体情况,他可以输入此人的姓名,就查询出此人各方面的情况;也可以有年龄条件,当用户输入某个年龄段,就会查询出处于这个年龄段的所有人的信息。到底采用哪些查询条件,这需要开发者根据用户和系统的要求进行设计,其具体实现过程大都大同小异。为了节省篇幅,我们就仅以年龄为条件进行查询。查询窗口运行情况如图9。
      在这个程序中我们使用了一个控件DBGrid,这个控件用来显示查询结果,选中VB的“工程”菜单下的“部件……”项,在控件标签中,选中“Microsoft Data Bound Grid Control 5.0”即可,在工具箱中就会出现DBGrid控件的小图标。其使用和其它控件一样。
      为了和数据库连接,DATA控件是不可少的,回忆一下,该怎样设置它的属性,OK!同输入窗口一样,在CONNECT属性中,选中“ACCESS”项。在DatabaseName属性中,输入“C:TEMP登记.mdb”。在RecordSource属性中,选中......嘿,嘿,这里稍微有点不同,如果按输入窗口那样的设置,查询结果中就会包含登记号字段了。在此属性中我们应该输入SQL语句:
      select name as 姓名,sex as 性别,hometown as 籍贯,age as 年龄,birthday as 生日,company as 单位,address as 地址,zip as 邮编,telephone as 电话,fax as 传真 from Register。别着急,尽管这条语句有点长,实际上却比较简单。这条语句的语法是:
      SELECT 字段名,字段名,……FROM 表名 WHERE 条件;
      对照语法,我们可以看出输入的SQL语句的含义:从表Register中查询姓名,性别,籍费,……字段的值。只要在字段列表中不选中登记号字段,在查询结果中,就不会显示登记号的值了。如果你够细心的话就会注意到我们所写的SQL语句中在字段列表中并不仅仅输入字段名,在其后面还增加了as……项,如“name as 姓名”,这是为name字段取一个别名“姓名”,以便在DBGrid控件中显示字段名时,就会显示“姓名”而不是“name”。
      完成了DATA控件属性的设置就可以将DBGrid控件捆绑到DATA控件上,其方法同输入窗口。对了,将“DataSource”属性设置为“DATA1”即可。现在不妨运行一下程序,真令人兴奋,DBGrid显示出表中所有的信息。可是怎样显示符合条件的数据呢?再看一看上面的SQL语法,WHERE段后可以输入查询条件,比如:需要年龄在20到30岁之间的人员信息,其语句为:Select name,... From register where age>20 and age<30;
      我们只要根据用户输入的条件构成新的SQL语句,并利用DATA控件的Refrensh方法刷新数据库,就可以完成条件查询了。
      整个程序十分简单,当用户在文本框中输入年龄段后,点按“查询”命令,就会显示符合条件的查询结果。程序代码如下:

      Option Explicit
      Const allinfo = "select name as 姓名,sex as 性别,hometown as 籍贯,age as 年龄,birthday as 生日,company as 单位,address as 地址,zip as 邮编,telephone as 电话,fax as 传真 from 登记" ’定义不带条件的SQL查询语句

      Private Sub Command1_Click()
      Dim t1, m, n As String
      ’构造SQL语句的WHERE条件段
      If IsNumeric(Text1.Text) Then
      m = " age >" + Text1.Text
      End If
      If IsNumeric(Text2.Text) Then
      n = " age < " + Text2.Text
      End If
      If m = "" And n = "" Then
      t
      回答者: 末路小狂 - 举人 四级 1-16 11:27
      提问者对于答案的评价:
      非常感谢!
      对最佳答案的评论
      非常的好!!
      评论者: q7376671 - 魔法学徒 一级
      dnyr 大哥我太谢谢你了~~~
      学习
      评论者: ringringle - 试用期 一级
      其他回答
      共 1 条
      展开全文
    • 这是同样系列的第二篇,上一篇在:...这一章将会讲述如何在Access中建立数据库。我将同时讲述Access2003和2013两种版本的操作方法。当然,创建一个数据库的操作自然也包括了创建表,增加字段这些操作

      这是同样系列的第二篇,上一篇在:http://blog.csdn.net/jiluoxingren/article/details/9451987


      建立数据库

      前文再续,书接上一回。这一章将会讲述如何在Access中建立数据库。我将同时讲述Access2003和2013两种版本的操作方法。


      先来讲如何创建一个数据库,当然,创建一个数据库的操作自然也包括了创建表,增加字段这些操作。


      先说2003的操作方式:


      选择【空数据库...】,然后在弹出来的【文件新建数据库】对话框中选择好路径,填好文件名,单击【创建】就有一个新的数据库文件了。

      这时候会弹出一个对话框,如下图:


      如图在左边的对象那一列选择【表】,右边选择【使用设计器创建表】,然后按左上角的【打开】,就会打开表设计器窗口,如下图:


      至今为止,我都没有说要设计一个什么程序来作为示例教导大家如何使用数据库,既然前面以StudentID字段作为例子,就设计一个学生管理系统为例吧。那么在【字段名称】的第一行处输入StudentID(即学生编号),我之前说过,字段名等不要用中文,所以这里用的是英文。在【数据类型】的第一行处选择【数字】(虽然选择【自动编号】会让我们后面的程序更方便,不过为了说多一些知识,就让我绕个弯子吧),之后下面的常规那里原本是空白的,就会变成如图所示的样子。


      下面我们来研究一下下面的【常规】选项卡有什么用。对于我们来说,一般有用的是【字段大小】,【小数数位】,【必填字段】和【索引】这四个。以次来说。


      【字段大小】指的是每一个记录中这个字段所能存储的数据大小,对于现在的【数字】,当然指的就是数字的大小了。一般有【字节】,【整形】,【长整型】,【单精度型】,【双精度型】,【同步复制ID】,【小数】。当我们在选择【字段大小】的时候,右边的蓝色字提醒我们最常用的是【双精度型】和【长整型】。各种类型的存储范围和VB大概对应的数据类型如下表:

      类型存储范围VB对应类型
      字节保存从 0 到 225(无小数位)的数字。Byte
      整型保存从 -32,768 到 225(无小数位)的数字Integer
      长整型(默认值)保存从 -2,147,483,648 到 2,147,483,647(无小数位)的数字。
      Long
      单精度型保存从-3.402823*(10^38) 到-1.401298*(10^-45 )的负值,
      从 1.401298*(10^-45) 到 3.402823*(10^38) 的正值。
      Single
      双精度型保存从–1.79769313486231*(10^308) 到–4.94065645841247*(10^324) 的负值,以及从 4.94065645841247*(10^324) 到 1.79769313486231*(10^308) 的正值。
      Double
      同步复制ID全局唯一标识符 (GUID)(GUID:在 Access 数据库中,一种用于建立同步复制唯一标识符的 16 字节字段。GUID 用于标识副本、副本集、表、记录和其他对象。在 Access 数据库中,GUID 是指同步复制 ID。)
      String
      小数28位的小数
      Double

      上面的这些数据可以在选择【字段大小】的时候按下F1来查看(注:对于【小数】这个类型的说明,原文是这样表述的“存储从 -10^38-1 到 10^38-1 范围的数字 (.adp);存储从 -10^28-1 到 10^28-1 范围的数字 (.mdb)”它的表达方式 -10^38-1 之类的很令人费解,既不是-10的38次方减一,也不是-10的38-1次方,无论哪一个都是很小的负整数,不是小数。所以取了原文的小数数位作为这里的描述)那么现在StudentID作为一个ID,ID可能多达10多位,就只能取【双精度型】了,【长整型】达不到那么大的数。但是对于小的内容,我们就应该设置为范围小的数据类型,这样数据库引擎对他的处理会更快,消耗的内存也更少。


      【小数数位】从字面上理解就可以了,从上面的描述中可以知道,只有【单精度型】,【双精度型】,【小数】这三种类型设置这个属性才是有意义的。【小数】类型的有28位小数,无整数部分,单精度类型的是7位小数,双精度的是15位小数,如果设置了超过该类型所承受的小数数位,则还是按照这个类型所能支持的最大小数数位来计算。这里的StudentID就设置为0好了。


      【必填字段】就是说明在一个记录中这个字段是否是必须填写的,这个属性只有两个选择,要不就【是】,要不就【否】,会中文的都知道是什么意思了,不解释了。这里的StudentID就设置为【是】好了。


      还有一个就是【索引】,可以选择的是【无】,【有(无重复)】,【有(有重复)】。有索引可以加快搜索和排序的速度,但是可能降低更新数据的速度。一般我都选有,而有重复和无重复的差别就是是否允许字段中出现重复的数据,这里的StudentID就设置为【有(无重复)】好了。


      最终的设置如下:


      然后我们回到【字段名称】的第一行,单击鼠标右键,选择【主键】(如下图)。虽然定义主键不是必须的,但是还是推荐这样做,定义你认为最重要的字段为主键即可,这里当然就是StudentID了。


      说了那么多,我们继续表的创建。在【字段名称】那一栏的第二行,我们输入StudentName,别简单地输入Name就算数了,虽然它允许(在2013的版本里会发出警告的),但是在SQL语句和数据库引擎里是保留字,有其独特的用途,所以不要直接使用保留字来做字段名,表面和数据库名。Access的保留字列表:http://wenku.baidu.com/view/f09e8be3172ded630b1cb664.html


      在数据类型的那一列的第二行选择【文本】,在下面【常规】选项卡中修改如下的属性为表中的值:

      属性名修改之后的值
      必填字段
      允许空字符串
      索引有(有重复)

      最后输入好的表就有两个字段了,以后要新的字段的时候在新加也是可以的。


      最后直接点击表编辑器右上角的关闭(上图红色框),在弹出的时候保存表的更改那里选择是,在随后的表另存为中修改表名称为Student并确定。


      关闭表编辑器之后,我们又回到了最初保存数据库之后的窗口,在左边对象那一列选择【表】,你就会发现下面多了一个名为Student的表,就是我们刚才建立的(如下两张图的第一张),要想输入数据,双击它就会出来一个窗口(如下两张图的第二张)



      对于2003数据库的创建,就是怎么多,最后在文件菜单按一下保存就可以关闭Access了。

      对于2013版本的Access,他的创建显得没那么麻烦,其实要做的工作还是怎么多,只不过都和2003版本的很相似,就是操作的界面不同罢了。下面来说一下:


      首先在启动Access 2013之后,我们会看到如下的新建界面

      选择空白桌面数据库,弹出如下的窗口。这里要留意了,Access 2013默认创建拓展名为*.accdb的新型数据库文件,我们方便操作的是*.mdb文件,两种文件不兼容的。所以我们单击红色框的选择路径按钮,在修改数据库的文件名和路径的同时修改格式,如下图:


      在弹出的文件新建数据库对话框里修改文件名和路径,留意蓝色框中选择的文件版本是2002-2003数据库,如下图:

      单击确定之后就会回到刚才的新建对话框,在那里单击创建(如上两张图)就可以了。

      完成之后我们看到的是如下的界面:


      你会发现2013用起来真是清爽。可以看到最左边的侧边栏显示的是当前的数据库有哪些表。这里的表1是默认新建的。右边是编辑表数据和字段的视图。在没有数据之前可以通过那个“单击以添加”来添加字段,ID这个字段是默认自动添加的,在添加了自己需要的字段之后如果不需要他可以删掉(之后再说明怎么删,因为ID这个是默认的主键,不能在当前的视图下删除)。照样,我们单击“单击以添加”来添加字段,单击之后会出来一个菜单,让我们选择字段的数据类型。我们选择【数字】(如下图)


      然后输StudentID,之前2003版本中的【常规】选项卡里的属性已经挪到了界面的上方,如下图的红色框区域:


      数据类型,必须,唯一,已索引是2003版本中介绍的三个属性中的两个,还有一个是字段大小,要在别的视图才能设置,下面和怎么删掉ID字段,设置新的主键一起说。

      编辑表数据和字段的视图上面的的【表1】那里(也就是ID上面的那个)单击右键,选择【关闭】。这时候他会提示你是否保存更改,单击是之后会出现【另存为】对话框,在表名称那里输入Student,这些操作都是和2003版的很相似的。


      在左边侧边栏的【表1】那里单击右键,选择【设计视图】,如下图:


      打开之后出来的是我们在2003版本看得很熟,我花了很大的篇幅去说的【表编辑器】,几乎一模一样,只不过2013版本的表编辑器不是一个窗口,而是一个选项卡,跟编辑表数据和字段的视图一样。如下图:


      留意上图的红色框,里面有一个钥匙的图标,那就是主键的符号,正因为ID字段是主键,所以不能随意删掉,我们在第二行,StudentID字段单击右键,选择【主键】,这时候变成第二行前面有了钥匙的符号,第一行没有,也就是说主键已经从ID这个字段变为StudentID这个字段,这时候我们就可以在第一行ID那里单击右键,选择【删除行】删掉ID这个字段了。而下面的【常规】选项卡也和2003版本的一样,要修改字段大小可以在这里修改。同样地添加StudentName字段,同样不要只用Name这个名字,用2013版本的朋友注意参见上面的2003的介绍,修改好【常规】选项卡里需要修改的属性。


      最后就是按Ctrl+S保存了,或者按文件菜单保存,都一样。那么下一章将会讲述数据库的连接。未完,待续。


      下一章:连接数据库与SQL语句的Select语句初步 http://blog.csdn.net/jiluoxingren/article/details/9474661

      展开全文
    • 用ORACLE建立数据库(详解)

      千次阅读 2010-01-03 12:29:00
      数据库结构和空间管理(数据文件、日志文件、表空间、段、模式和模式对象) 一个ORACLE数据库是数据的集合,被处理成一个单位。一个ORACLE数据库有一个物理结构和一个逻辑结构。 ORACLE逻辑数据库结构是用户所涉及的...
    • Access教程 第二章 建立数据库

      千次阅读 2008-03-12 12:39:00
      本章内容 ◆ 数据库的设计概念与创建数据库。◆ 表的创建及表与表之间的关系。◆ 数据库的修改、设计与编辑。 一、数据库的设计 1.概念及准则 下面介绍数据库设计的概念,及由此而产生的数据库设计准则。Access...
    • 数据库索引 建立方法

      千次阅读 2016-04-20 15:08:18
      建立索引之后查找和修改,排序等操作可以省很多时间。 索引是对数据库表中一个或多个列(例如,employee 表的姓名 (name) 列)的值进行排序的结构。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行
    • 数据库的基本概念 一 数据 数据的定义:在计算机科学中,数据的定义是指...数据库管理系统的定义:是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库数据库管理系统的功能:操纵和管理数据库。 常见的
    • 关于论坛数据库的设计

      千次阅读 2016-04-21 17:29:25
      关于论坛数据库的设计 文章分类:数据库 一个简单的论坛系统 1:包含下列信息: 2:每天论坛访问量300万左右,更新帖子10万左右。 请给出数据库表结构设计,并结合范式简要说明设计思路。 一. 发帖主题和回复...
    • SQL SERVER数据库定义和建立

      千次阅读 2017-04-30 10:10:43
      创建数据库
    • 为了解决人脸识别算法设计与测试中图像样本背景单一,难以测试算法在自然环境中的识别效率这一问题,采用了分类实践的方法,建立了基于自然状态背景的人脸图像数据库;同时,设计了图像采集系统,实现了多种状态采集模式,...
    • 操作系统 Windows 10 ...关于针对数据库的连接,之前没有特别注意过,直到遇到如下问题: Could not open JDBC Connection for transaction; nested exception is com.mysql.jdbc.exceptions.jdbc4.Communication
    • oracle数据库链路的建立和使用

      万次阅读 2016-11-24 17:40:10
      oracle数据库链路的建立和使用 一、数据库链路的建立:    1、数据库链路的建立语法一般是:CREATE DATABASE LINK[db_link_name] CONNECT TO [user_name] IDENTIFIED BY [password] USING '[tns_name]';...
    • 数据库MySQL详解

      万次阅读 多人点赞 2018-07-24 20:03:47
      什么是数据库管理系统 数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。...
    • 手动建立 Oracle9i 数据库

      千次阅读 2004-10-15 10:33:00
      手动建立 Oracle9i 数据库(转载)(原文刊登于2002年03月Linuxer杂志) 作者: 何致億, 美商甲骨文公司台湾分公司特约顾问 前几期我们分别探讨 Oracle9i 核心要素与数据库实体组成,相信大家对于 Oracle9i 数据库...
    • 数据库中存储过程意义

      千次阅读 2016-07-27 14:07:21
      创建了是拿来用的,至于为什么要用存储过程,要先了解存储过程存在的意义: 存储过程由SQL语句和流程控制语句组成。它的功能包括:接受参数;调用另一过程;返回一个状态值给调用过程或批处理,指示调用成功或失败;返回...
    • 针对海洋石油GIS平台环境专业应用,研究了海洋石油环境目标数据库建立的技术与方法。着重阐述了环境专业项目应用的目标,研究了环境空间对象动态植入、空间数据库结构、录入模板设计等关键技术,并提出了环境目标...
    • 建立索引的优缺点: 为什么要创建索引呢? 这是因为,创建索引可以大大提高系统的性能。 第一、通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 第二、可以大大加快 数据的检索速度,这也是创建...
    • 该文档介绍了数据库角色的创建与使用,可以对角色的创建过程有进一步了解。
    • 使用场景:在功能元数据管理中需要根据自定义的数据源进行连接,从而在该数据源下面进行增删改查的相关操作,采用Druid连接池根据数据库里面存储的数据源信息动态连接数据库。实现方式如下:首先获取数据库的连接...
    • 数据库建立索引的优缺点

      千次阅读 2019-04-01 14:21:34
      为什么要建立索引,即索引的优点: ① 建立索引的列可以保证行的唯一性,生成唯一的rowId ② 建立索引可以有效缩短数据的检索时间 ③ 建立索引可以加快表与表之间的连接 ④ 为用来排序或者是...
    • 数据库数据库概论

      千次阅读 2015-05-03 12:40:31
      数据库地位数据库技术产生于六十年代末,是数据管理的最新技术,是计算机科学的重要分支。 数据库技术是信息系统的核心和基础,它的出现极大地促进了计算机应用向各行各业的渗透。 数据库的建设规模、数据库信息量...
    • 数据库笔记

      2018-11-02 20:29:05
      关于数据库的一些笔记,是自己整理的。 数据:数据是人们用各种物理符号,把信息按一定格式记载下来的有意义的符号组合。数据不仅仅是数字,还可以是文字、图象、声音等各种表现形式。数据经数字化后可以存入计算机...
    • 数据库为什么要建立索引?

      千次阅读 2018-06-03 16:46:23
      一:什么是索引?索引(Index)是帮助MySQL高效获取数据的数据结构。二:为什么要建立索引?一个没有索引的数据库表就相当于一本...三:选择什么字段建立索引索引也是要占用存储空间的,建立索引的时候也是有一定...
    • ArcGIS影像数据库建立与入库

      万次阅读 2011-03-31 20:38:00
      空间数据库技术 空间数据库技术用关系数据库管理系统(RDBMS)来管理空间数据,主要解决存储在关系数据库中的空间数据与应用程序之间的数据接口问题,即空间数据库引擎( Spatial Database Engine)。更确切地说,空间...
    • 数据库建立索引的好处与坏处

      千次阅读 2018-04-26 13:23:49
      原文出处:原文出处数据库...第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。第五,通过使用...
    • 为了解决人脸识别算法设计与测试中图像样本背景单一,难以测试算法在自然环境中的识别效率这一问题,采用了分类实践的方法,建立了基于自然状态背景的人脸图像数据库;同时,设计了图像采集系统,实现了多种状态采集...
    • 数据库建立——物资管理系统

      千次阅读 2014-06-10 21:22:56
      一、 前言(课程设计的目的、意义、要求) 1. 加深对讲授内容的理解  《数据库系统》中有关数据库技术的基本理论、基本概念、设计与实现的方法和阶段性知识,光靠课堂讲授既枯燥无味又难以记住,但它们都很重要...

    空空如也

    空空如也

    1 2 3 4 5 ... 20
    收藏数 219,772
    精华内容 87,908
    关键字:

    关于建立数据库的意义