(四)ACCESS数据库的结构

2024-10-15

(四)ACCESS数据库的结构(共10篇)

1.(四)ACCESS数据库的结构 篇一

Access数据库处理功能十分强大,但在打印设置功能上却不及Word,所以我们可以请出Word来美化设置和打印Access数据表格。首先,在Access打开源数据库,做完排序等数据处理后,在“导航”窗格中,选择包含待导出数据的对象。接下来根据所用Access版本不同,介绍后续不同操作。

一、Access表格

在“工具”菜单中,指向“Office链接”→“用Microsoft Office Word发布”(如图1),系统将自动生成一个Word RTF格式的文件,并自动打开这个文件的Word编辑窗口。

二、Access表格

单击“外部数据”选项卡,在“导出”组中,单击“Word”(如图2)。只有在数据库打开时,才能使用“导出”命令。

在“导出向导”中,指定目标文件的名称;如果你想在导出操作完成之后查看Word文档,请选中“完成导出操作后打开目标文件”复选框;如果在开始导出操作之前选择了要导出的记录,可以选中“仅导出所选记录”复选框(如图3)。不过,如果想导出视图中的所有记录,请保持该复选框处于清空状态。如果没有选择记录,此复选框会显示为不可用状态。设置完毕,单击“确定”按钮。

无论是哪一个Access版本,当同名的.rtf文件已经存在,会弹出是否替换已有文件的对话框,提示你单击“是”以覆盖该文件(如图4)。单击“否”可更改目标文件的名称。现在,在Word编辑窗口,就已经是由Access数据库转换而成的表格了。这时,你可以对这个表格的字体、边框、底纹等进一步进行设置,然后在Word中打印输出就万事大吉了。

三、注意事项

当你使用“导出向导”导出对象时,Access会在一个Word RTF格式文件(*.rtf)中创建该对象数据的副本。对于表、查询和窗体,可见字段和记录在Word文档中会显示为表格。“导出向导”始终会导出带格式的数据。这就意味着只有在对象或视图中能看到的字段和记录会连同显示格式设置一起导出。因筛选器设置而隐藏的列和记录不会被导出。对于报表,报表布局也会在导出时被保留,以试图使Word文档与报表尽可能相似。

Access数据库发布或导出为Word表格前,请检查源数据,确保其中不包含错误指示符(绿色三角形)或#Num这样的错误值。在将数据导出到Word之前,一定要先解决错误问题,否则,你会发现这样的值被替换为Null值。

如果目标Word文档存在并且是打开的,请在继续操作之前先关闭它。不能向现有的Word文档追加数据。在数据库中,如果你只想导出表、查询或窗体的一部分,请打开该对象,然后只选择需要的记录。

当你从Access导出到Word文档时,数据始终会导出到一个新Word文档中。如果你希望数据插入到一个现有的Word文档中,则必须将该数据从Access导出到一个新Word文档,然后将数据从这个新 Word 文档复制并粘贴到现有的文档中。或者,你也可以从Access表、查询、窗体或报表中直接复制行,然后将它们粘贴到现有的文档中。

[Access数据库打印功能的设置]

2.(四)ACCESS数据库的结构 篇二

Access数据库是目前最为流行的桌面型数据库管理系统, 它的界面友好、操作简单、功能全面、使用方便, 大大普及了数据库的应用, 并取得了一系列骄人的业绩。为此, 本文针对Access的构建, 从不同行业的应用分析, 体现了Access数据库应用所带来的优异效果。

1 Access数据库的构建基础

Access数据库应用系统的构建一般要经过系统分析、系统设计、系统实施和维护几个阶段, 现对此逐一展开分析。

1.1 系统分析

系统分析的主要任务是解决“做什么”的问题, 即根据用户的需求, 确定系统应具有的功能以及数据库模型的建立。系统分析的好坏直接决定系统的成败。系统分析阶段工作做得越好, 系统开发的过程就越顺利。以“学生成绩数据库管理系统”为例, 大体归纳系统应具有以下几点功能:

(1) 提供学生的基本信息 (学号、姓名、性别、专业等) 和课程的基本信息 (课程号、课程名、学分、学时等) 的录入。

(2) 提供对学生所选课程的录入。

(3) 可通过选择某个课程, 录入选修该课程学生的成绩。

(4) 可通过输入学号查询学生的基本信息和成绩, 可通过输入课程号查询该课程的基本信息和选修该课程学生的成绩。

(5) 提供对学生、课程和成绩信息的打印报表。

1.2 系统设计

数据库应用系统的设计, 是在数据库应用系统分析阶段确立的总体目标基础上, 对系统进行初步设计, 解决“怎么做”的问题。在系统设计阶段要建立系统总体规划的逻辑模型, 完成系统各功能模块的划分, 确定各模块相互间的关系。

1.3 系统实施与维护

系统实施的主要任务是按系统设计阶段给出的系统功能模块的设计方案, 具体实施系统的逐级控制和各功能模块的建立, 从而形成一个完整的应用开发系统。

在数据库应用系统开发的实施阶段, 一般采用“自顶向下”的设计思路和步骤来开发系统。通过系统菜单或系统控制面板逐级控制低一层的模块, 确保每一个模块完成一个独立的仟务, 且受控于系统菜单或系统控制面板。具体设计数据库应用系统时, 尽可能使每一个功能模块小而简明, 模块间接口数目尽员少, 从而使得每一个模块易维护、易修改。

在完成数据库应用系统的建立后, 就进入了系统的调试和维护阶段。在此阶段, 不仅要通过调试工具检查、调试数据库应用系统, 还要通过模拟实际操作或实际数据验证数据库应用系统, 若出现错误或有不适当的地方要及时加以修正, 并根据用户使用后反馈的情况, 修正数据库系统的缺陷, 完善系统各项功能。

2 Access数据库的一般构建方法

数据库是数据库应用系统的数据源, 其设计的好坏直接影响整个系统的设计开发过程。数据库的设计通常首先建立概念模型, 然后再将概念模型转换为关系模型, 最后再根据所建立的关系模型生成实际数据库。

2.1 概念模型的建立

建立概念模型是在需求分析的基础上, 通过E-R图描述用户的数据和数据间的关系。对于学生成绩管理系统, 建立的E-R图如图1所示。

2.2 关系模型的建立

依据E-R图, 可将该图转换为关系模型, 在转换中, 应注意主键的确定和关系的规范化, 通常应达到3NF。由图1所示, 确定建立如下三个关系:

学生 (学号, 姓名, 性别, 出生日期, 政治面貌, 专业, 四级通过, 入学成绩, 家庭住址, 照片) ;

课程 (课程号, 课程名, 学时, 学分, 类别, 简介) ;

选课 (学号, 课程号, 成绩) 。

2.3 实际数据库的建立

根据前面所做分析, 就可以开始进入实际数据库的建立。

2.3.1 数据库的建立

操作步骤如下:

(1) 建立学生成绩管理文件灾;

(2) 启动Access, 选择空Access数据库, 进入文件新建数据库对话框;

(3) 在文件名组合框中输入学生成绩管理, 创建按钮, 完成学生成绩管理数据库的建立。

2.3.2 数据表的建立

由关系模型所定义的关系。分别建立学生、课程和选课三个数据表。

2.3.3 确定表间关系

数据表建立完成后。就可以建立表间的关系, 操作步骤如下:

(1) 单击工具菜单中关系命令项, 弹出显示表对话框;

(2) 在显示表对话框中, 分别将学生、课程和选课三个数据表逐一添加到关系窗口;

(3) 在关系窗口中, 将各表中相应字段拖到对应表中的相应字段, 选定实施参照完整性复选框, 由此将各表建立关联关系。

3 Access数据库的应用与效果

Access数据库对于数据的管理广泛应用到工农业数据、商业资讯、图书信息、教学管理等, 且与其他技术相匹配表现出强大的应用效果。

3.1 工业设备与物料管理

利用Access数据库将工业设备运转信息积累, 通过历史查询和支持向量机推理、比较等, 给决策者提供实用的参考信息, 可提前对工业过程做出干预, 解决潜在的问题, 保证工业生产的正常运行。

3.2 农业生产管理

利用Access数据库与物联网技术相结合, 对设施农业过程进行监管, 保证了农业生产的质量和效率。

4 结论

鉴于Access数据库的特点, 它已经在各行业中广泛应用。为了更好的应用Access数据库, 体现出其应用价值, 需要结合不同的工具, 取长补短, 这样才能不断拓宽数据库的应用面。

参考文献

[1]聂玉峰.陈东方.田萍芳.Access数据库技术与应用[M].北京:科学出版社, 2011.

3.(四)ACCESS数据库的结构 篇三

关键词:VB编程;Access数据库;应用研究

中图分类号:TP311.13 文献标识码:A文章编号:1007-9599 (2011) 08-0000-02

Application Research of Non-Access Database in VB Programming

Meng Suhua

(Wuhan Traffic School,Wuhan430074,China)

Abstract:Access object variable database structure as a function of a more comprehensive Windows software development platform,Visual Basic Professional Edition provides strong support for database applications.In particular,using the data control and provides a binding control,the use of database access object variables(Data Access Object Variable),direct calls to ODBC 2.0 API interface functions such as three ways to access the database.Its standard built-in Ms Access database,it can provide is not weaker than the support of professional database software,database maintenance can be a complete,operational and transaction processing.In VB,Access database,known as non-invasive database.For FoxPro,dBASE,Paradox and other external databases.Although the use of VB's data manager can These databases NEW,OPEN,DESIGN,DELETE,etc,but the application does not run from the bottom of the real state of these functions.This article from the database access object variable using the method of starting to realize the non-Access format database(to FoxPro database as an example)and build a new database,copy the database structure,dynamic redeployment of other operations,elaborated from the VB programming skills make up for these exotic Lack of support for the feasibility of the database.

Keywords:VB programming;Access database;Aapplication

一、VB数据库的体系结构具体的VB的数据库结构

VB数据库的核心结构是所谓的MicroSoft JET数据库引擎,JET引擎的作用就像是一块“面板”,在其上可以插入多种ISAM(Indexed Sequential Access Method,即索引顺序存取方法)数据驱动程序。JET引擎为Access格式数据库提供了直接的内部(build-in)支持,这就是VB对Access数据库具有丰富支持的真正原因。

VB专业版中提供了FoxPro、dBASE(或Xbase)、Paradox、Btrieve等数据库的ISAM驱动程序,这就使得VB能支持这些数据库格式。另外,其他的许多兼容ISAM的驱动程序也可以通过从厂商的售后服务得到。因而从理论上说,VB能支持所有兼容ISAM的数据库格式(前提是只需获得这些数据库的ISAM驱动接口程序)。

由上可见,Ms JET引擎实质上提供了:一个符合ANSI标准的语法分析器;为查询结果集的使用而提供的内存管理功能;同所支持的数据库的外部接口;为应用代码提供的内部接口。实际上,在VB中从一种数据库类型转化为另一种数据库类型几乎不需要或只需要很少的代码修改。而且,尽管dBASE、Paradox本身的DDL(Data Definition Language,即数据定义语言)和DML(Data Manipulation Language,即数据操纵语言)是非结构化查询的,但它们仍然可以使用VB的SQL语句和JET引擎来操纵。

从VB的程序代码的角度来看,ODBC,ISAM驱动程序以及Ms Access数据库的整个外部结构够可以统一为一个一致的编程接口。也即是说,提供给VB应用程序员的记录集对象视图同所使用的数据库格式及类型是相互独立的。即对FoxPro等数据库仍然可以使用众多的数据库存取对象变量,这就为非Access数据库的访问提供了最重要的方法。

二、使用非Access数据库时的参数设置及配置文件的参数读取

如果在VB的程序中使用了数据库的操作,将应用程序生成EXE文件或打包生成安装程序后,则必须提供一个配置(.INI)文件,在INI文件中可以对不同类型的数据库进行设置。如果找不到这个INI文件,将会导致不能访问数据库。通常情况下,INI文件的文件名和应用程序的名称相同,所以如果没有指明,VB的程序会在Windows子目录中去找和应用程序同名的INI文件。可以使用VB中的Set Data Access Options语句来设置INI文件。

Set Data Access Options语句的用法如下:Set Data Access Options1,IniFile Name其中IniFile Name参数指明的是INI文件的带路径的文件名。值得注意的是,当应用程序找不到这个INI文件时,或在调用Open Data Base函数时对其Connect参数值没有设定为VB规定的标准值,如对FoxPro 2.5格式设定为了“FoxPro;”(应为“FoxPro 2.5;”),或者没有安装相应的ISAM驱动程序,则此时VB会显示一条错误信息“Not Found Installable ISAM”。通常,INI文件在应用程序分发出去以前已经生成,或者在安装时动态生成,也可以在应用程序中自己生成。通常这种INI文件中有“[Options]”、“[ISAM]”、“[Installed ISAMs]”、“[FoxPro ISAM]”、“[dBASE ISAM]”、“[Paradox ISAM]”等设置段,对于一个完整的应用程序则还应有一个属于应用程序自己的设置段如“[My DB]”。可在其中设置Data Type、Server、Data Base、Open On Startup、Display SQL、Query Time Out等较为重要的数据库参数,并以此限定应用程序一般的运行环境。Windows API接口函数在Kernel.exe动态链接库中提供了一个OS Write Private Profile String函数,此函数能按Windows下配置文件(.INI)的书写格式写入信息。

在通常情况下,应用程序还需要在运行时读取配置文件内相关项的参数。比如Page Time Out(页加锁超时时限)、Max Buffer Size(缓冲区大小)、Lock Retry(加锁失败时重试次数)等参数,通过对这些参数的读取对应用程序运行环境的设定、潜在错误的捕获等均会有很大的改善。

设此应用程序的配置文件为MyDB.INI,则具体过程如下:Funtion GetINIString$(Byval Fname$,Byval szItem$,Byval szDeFault$)'此自定义子函数实现INI文件内设置段内参数的读取Dim Tmp As String,x As Integer Tmp=String(2048,32)x=OSGetPrivateProfileString(Fname$,szItem$,szDefault$,Tmp,Len(Tmp),"MyDB.INI")GetINIString=Mid$(Tmp,1,x)End

Function以下这些函数的声明可写在模块文件内,且每个函数的声明必须在一行内Declare Function OSGetPrivateProfileString% Lib "Kernel" Alias "GetPrivateProfileString"(ByVal AppName$,ByVal KeyName$,ByVal keydefault$,ByVal ReturnString$,ByVal NumBytes As Integer,ByVal FileName$)Declare Function OSWritePrivateProfileString%Lib"Kernel"Alias "WritePrivateProfileString"(ByVal AppName$,ByVal KeyName$,ByVal keydefault$,ByVal FileName$)Declare Function OSGetWindows

Directory%Lib"Kernel"Alias"GetWindowsDirectory"(ByVal a$,ByVal b%)Sub Form1-Load()Dim st As String Dim x As Integer Dim tmp As String tmp=String$(255,32)'

INI文件内为各种数据库格式指明已安装的相应ISAM驱动程序x=OSWritePrivateProfileString("Installable ISAMS","Paradox 3.X","PDX110.DLL","MyDB.INI")x=OSWritePrivateProfileString("Installable ISAMS","dBASE III","XBS110.DLL","MyDB.INI")x=OSWritePrivateProfileString("Installable ISAMS","dBASE IV","XBS110.DLL","MyDB.INI")x=OSWritePrivateProfileString("Installable ISAMS","FoxPro 2.0","XBS110.DLL","MyDB.INI")x=OSWritePrivateProfileString("Installable ISAMS","FoxPro 2.5","XBS110.DLL","MyDB.INI")x=OSWritePrivateProfileString("Installable ISAMS","Btrieve","BTRV110.DLL","MyDB.INI")x=OSWritePrivateProfileString("dBase ISAM","Deleted","On","MyDB.INI")'指明INI文件的位置x=OSGetWindowsDirectory(tmp,255)st=Mid$(tmp,1,x)SetDataAccessOption1,st+"mydb.ini"'获得INI文件一些参数gwMaxGridRows=Val(GetINIString("MyDB.INI","MaxRows","250"))glQueryTimeout=Val(GetINIString("MyDB.INI","QueryTimeout","5"))glLoginTimeout=Val(GetINIString("MyDB.INI","LoginTimeout","20"))End Sub

三、数据存取对象变量对外来数据库编程的方法及其实例

在VB专业版数据库编程的三种方法中,第二种-使用数据库存取对象变量(DAO)的方法最具有功能强大、灵活的特点。它能够在程序中存取ODBC2.0的管理函数;可以控制多种记录集类型:Dynaset,Snapshot及Table记录集合对象;可以存储过程和查询动作;可以存取数据库集合对象,例如TableDefs,Fields,Indexes及QueryDefs;具有真正的事物处理能力。因而,这种方法对数据库处理的大多数情况都非常适用。

由于VB中的记录集对象与所使用的数据库格式及类型是相互独立的,所以在非Access数据库中也可以使用数据库存取对象变量的方法。因而对FoxPro等外来数据库而言,使用数据库存取对象变量的方法同样也是一种最佳的选择。有一点需要注意的是,VB的标准版中仅能使用数据控件(Data Control)对数据库中的记录进行访问,主要的数据库存取对象中也仅有Database、Dynaset对象可通过数据控件的属性提供,其它的重要对象如TableDef、Field、Index、QueryDef、Snapshot、Table等均不能在VB的标准版中生成,所以使用数据存取对象变量的方法只能用VB 3.0以上的专业版。

非Access数据库的新建及库结构的修改VB专业版中的数据库存取对象变量可以分为两类,一类用于数据库结构的维护和管理,另一类用于数据的存取。其中表示数据库结构时可以使用下面的对象:

DataBase、TableDef、Field、Index,以及三个集合(Collection):TableDefs、Fields和Indexes。每一个集合都是由若干个对象组成的,这些数据对象的集合可以完全看作是一个数组,并按数组的方法来调用。一旦数据库对象建立后,就可以用它对数据库的结构进行修改和数据处理。对于非Access数据库,大部分都是对应于一个目录,所以可以使用VB的MkDir语句先生成一个目录,亦即新建一个数据库。而每一个非Access数据库文件可看作是此目录下的一个数据表(Table),但实际上它们是互相独立的。下面是新建一个FoxPro 2.5格式数据库的程序实例。

Sub Create New()Dim Db1 As database,Td As TableDefs Dim T1 As New Tabledef,F1 As New Field,F2 As New Field,F3 As New Field Dim Ix1 As New Index Dim Path As String Const DB_TEXT=10,DB_INTEGER=3ChDir""Path$=Input Box("请输入新路径名:","输入对话框")MkDir Path$'新建一个子目录Set Db1=Open Database(Path$,True,False,"FoxPro 2.5;")Set Td=Db1.TableDefs T1.Name="My DB"'新建一个数据表,数据表名为My DB F1.Name="Name",F1.Type=DB_TEXT,F1.Size=20 F2.Name="Class",F2.Type=DB_TEXT,F2.Size=20 F3.Name="Grade",F3.Type=DB_INTEGER T1.Fields.Append F1'向数据表中添加这些字段T1.Fields.Append F2.

参考文献:

[1]刘开瑛.汉语全文检索中的义项标注技术研究[J].计算语言学进展与应用,北京:清华大学出版社,1995

[2]刘小虎.英汉机器翻译中词义消歧方法的研究[D].哈尔滨工业大学,1998

[3]赵铁军.机器翻译原理[J].哈尔滨:哈尔滨工业大学出版社,2000

[4]董振东,董强."知网",1999

http://www.keenage.com

[5]刘海涛.依存语法和机器翻译[J].语言文字应用,1997,3:89-93

4.ACCESS数据库2010教案 篇四

1讲 查询(1)

通过本节课学习了解简单查询的建立方法等。技能(能力)目标:

培养学生运用所学知识与技能,主动探究,解决实际问题的能力。培养学生的创新意识、创新能力。情感目标、价值观目标:

培养大家养成勇于探究新知识,不断地提高自身的审美意识,树立正确的人生观和价值。通过实例操作引导学生积极参与,培养学生的学习兴趣,在活动中的互相帮助不但增进了同学间的友情也培养了他们协同工作的能力。教学重点:

查询的作用和建立方法 简单查询的使用。教学难点:

如何设定查询准则是本节课的难点。教学方法和工具:

讲解法,讨论法,练习法,使用多媒体教学工具。教学过程: 第一课时:

4.1、SQL基本命令

一、简介

1、SQL——Structure Query Language(结构化查询语言),是关系数据库系统中应用广泛的数据库查询语言。

2、SQL的功能:数据定义、数据查询、数据操纵、数据控制

二、基本语句

SELECT [TOP N [PERCENT]] [DISTINCT] <字段名表> [INTO <表名>] FROM <表名> WHERE <条 1 件> GROUP BY <字段名> HAVING <条件> ORDER BY <表达式> 4.2、认识查询

一、查询的功能

选择字段、选择记录、编辑记录、实现计算、建立新表、建立基于查询的报表和窗

二、查询的类型

选择查询、交叉表查询、操作查询(生成表、更新、删除、追加)、SQL查询 4.3、数值与数值运算

一、常量:表示一个固定的、不变的量。P255 表8.2

1、数字型:100、-15.2、0、2.58E+20

2、文本型:“ABCD”、“张三”、“计算机”、“1234”

3、日期/时间型:#2005/10/20# #10:25:30# #2005-10-10 13:25:20#

4、布尔型:True、False

二、变量:表示一个随时可变的量,表示为一个名字。

1、内存变量:

2、字段变量: 第二课时:练习

课堂作业:请学生将练习过程中完成的课堂作业上交教师机。第三课时:

三、表达式与运算符

1、数值表达式:+、-、*、/、、^、()、Mod

2、字符表达式:+

3、日期/时间表达式:+、-

4、关系表达式:=、<>、>、>=、<、<=

5、逻辑表达式:Not、And、Or

6、特殊运算符:IN、BETWEEN、LIKE、IS NULL、IS NOT NULL

四、函数

1、数值函数:ABS、INT、SQR、SGN 2

2、字符函数:SPACE、STRING、LEFT、RIGHT、LEN、LTRIM、RTRIM、TRIM、MID

3、日期时间函数:DATE()、DAY()、MONTH()、YEAR()、WEEKDAY()、HOUR()

4、统计函数:SUM、AVG、COUNT、MAX、MIN 4.4、创建选择查询

一、创建不带条件的查询

1、使用查询向导:[查询];;简单查询向导 或[查询];

2、使用设计视图:[查询];;设计视图 或[查询];

3、运行查询:双击查询

4、修改查询:在设计视图中修改、编辑SQL语句

二、创建带条件的查询 WHERE、AND、OR、NOT

三、结果排序

ORDER BY 字段名 [DESC] 列在前面的记录:TOP N

四、多表查询:超联接查询 内部联接:INNER JOIN 左联接:LEFT JOIN 右联接:RIGHT JOIN 第四课时:练习

课堂作业:请学生将练习过程中完成的课堂作业上交教师机。课后小结:

第2讲 查询(2)

知识目标:

通过学习本节掌握查询中如何进行计算。掌握一定的函数。技能(能力)目标:

培养学生运用所学知识与技能,主动探究,解决实际问题的能力。培养学生的创新意识、创新能力。情感目标、价值观目标:

培养大家养成勇于探究新知识,不断地提高自身的审美意识,树立正确的人生观和价值。通过实例操作引导学生积极参与,培养学生的学习兴趣,在活动中的互相帮助不但增进了同学间的友情也培养了他们协同工作的能力。教学重点: 在查询中计算 掌握常用函数 教学难点:

如何通过计算得到自己希望的查询,以及掌握常用函数是重点。教学方法和工具:

讲解法,讨论法,练习法,使用多媒体教学工具。教学过程: 第一课时:

5.1、在查询中进行计算

一、了解查询计算功能

预定义计算:SUM、AVG、COUNT、MAX、MIN 用户自定义计算:各种表达式

二、自定义计算

三、总计查询

1、添加计算字段:

2、分组总计查询:GROUP BY

3、新字段命名:<表达式> AS <新字段名>

4、用新字段设置查询条件:HAVING 逻辑表达式 5.2、创建交叉表查询

一、认识交叉表查询 行标题、列标题、值、第二课时:练习

课堂作业:请学生将练习过程中完成的课堂作业上交教师机。第三课时:

二、创建交叉表查询

1、单一表交叉查询:向导、设计器

2、多表交叉查询:设计器 5.3、创建参数查询

由用户输入查询条件后,再进行查询

一、单参数查询:准则中输入[XXXXXX]

二、多参数查询:多字段准则中输入[XXXXXX] 5.4、创建操作查询

一、生成表查询 SELECT * INTO 表名

二、删除查询

DELETE FROM 表名 WHERE 条件

三、更新查询

UPDATE 表名 SET 字段名=表达式 WHERE 条件

四、追加查询

INSERT INTO 表名 SELECT…… 课后小结:

第3讲 查询(3)

知识目标: 学会创建SQL查询 技能(能力)目标:

培养学生运用所学知识与技能,主动探究,解决实际问题的能力。培养学生的创新意识、创新能力。情感目标、价值观目标:

培养大家养成勇于探究新知识,不断地提高自身的审美意识,树立正确的人生观和价值。通过实例操作引导学生积极参与,培养学生的学习兴趣,在活动中的互相帮助不但增进了同学间的友情也培养了他们协同工作的能力。教学重点:

1. 使用SQL修改查询中的准则 2. 创建SQL查询 教学难点:

如何使用准则是本节的重点也是难点。教学方法和工具:

讲解法,讨论法,练习法,使用多媒体教学工具。教学过程: 第一课时:

6.1、创建SQL查询

一、使用SQL修改查询中的准则

二、创建SQL查询 6.2、操作已创建的查询

一、运行已创建的查询

二、编辑查询中的字段

三、编辑查询中的数据源

四、调整查询的列宽

五、排序查询的结果 6.3、试题 第二课时:练习

课堂作业:请学生将练习过程中完成的课堂作业上交教师机。课后小结:

第4讲 窗体(1)

知识目标: 初步了解窗体的作用 掌握窗体的建立方法 技能(能力)目标:

培养学生运用所学知识与技能,主动探究,解决实际问题的能力。培养学生的创新意识、创新能力。情感目标、价值观目标:

培养大家养成勇于探究新知识,不断地提高自身的审美意识,树立正确的人生观和价值。通过实例操作引导学生积极参与,培养学生的学习兴趣,在活动中的互相帮助不但增进了同学间的友情也培养了他们协同工作的能力。教学重点:

掌握窗体的2种建立方法 学会使用窗体 教学难点:

如何建立自己需要的窗体是难点。教学方法和工具:

讲解法,讨论法,练习法,使用多媒体教学工具。教学过程: 第一课时

7.1、认识窗体

1、窗体是数据库中的一种对象。

2、窗体的作用:用于接收用户输入的数据或命令,显示表或查询中的数据、输入数据、编辑数据、修改数据。

3、窗体中的两类信息:提示信息、数据信息。

一、窗体的组成与结构——节

1、主 体 节:显示数据信息和安放控件。

2、窗体页眉:显示窗体的标题、使用说明……

3、窗体页脚:显示对所有记录都要显示的内容、使用命令的操作……

4、页面页眉:打印时的页头信息。

5、页面页脚:打印时的页脚信息。第二课时:练习

课堂作业:请学生将练习过程中完成的课堂作业上交教师机。第三课时:

二、窗体的类型

1、纵栏式窗体:P141——图4.3

2、表格式窗体:P141——图4.4

3、数据表窗体:P141——图4.5

4、主/子窗体:P142——图4.6

5、图表窗体:P142——图4.7

6、数据透视表窗体:P143——图4.8

三、窗体的视图

设计视图、窗体视图、数据表视图 7.2、创建窗体

一、自动创建窗体

数据库窗口;窗体;;新建窗体对话框;选择一个表或视图;自动创建窗体:纵栏式|自动创建窗体:表格式|自动创建窗体:数据表;确定

二、使用窗体向导

数据库窗口;窗体;;新建窗体对话框;选择一个表或视图;窗体向导 或 数据库窗口;窗体;单一表窗体

一对多窗体:子窗体、链接窗体

三、使用数据透视表向导

数据库窗口;窗体;;新建窗体对话框;选择一个表或视图;数据透视表向导 数据透视表的调整与设置 第四课时:练习

课堂作业:请学生将练习过程中完成的课堂作业上交教师机。第五课时:

四、使用图表向导

数据库窗口;窗体;;新建窗体对话框;选择一个表或视图;图表向导 图表的调整与设置 第六课时:练习

课堂作业:请学生将练习过程中完成的课堂作业上交教师机。第七课时: 7.3、自定义窗体

一、工具箱的使用

工具箱的打开与关闭、工具箱的移动与锁定

二、窗体、控件与控件的使用

1、窗体:页眉/页脚的设置、大小的调整……

2、标签控件:用于显示说明性文本,不显示字段或表达式的数值。

3、文本框控件:用于输入或编辑字段数据。分为结合型(从表、查询或SQL语言中获得所需内容)、非结合型(不链接到某一字段,用于显示提示信息或接收用户输入数据)、计算型(显示表达式的结果)

4、复选框、切换按钮、选项按钮:显示表或查询中的“是/否”、“真/假”、“On/Off”的值

5、选项组控件:多个复选框或选项按钮的组合。

6、列表框与组合框:值取自某固定内容的数据。

7、命令按钮:执行某项操作或某些操作

8、选项卡:将窗体分成多页

9、图像:

三、窗体和控件属性

属性决定窗体或控件的结构和外观特性、窗体和控件都有各自的属性。利用工具栏中的属性按钮或双击某一对象,可打开属性窗口进行设置。

1、常用格式属性:

控件格式属性:标题、字体、字形、字号、对齐方式、颜色…… 窗体格式属性:大小、边框、颜色、特殊效果…… 第八课时:练习

课堂作业:请学生将练习过程中完成的课堂作业上交教师机。第九课时:

2、常用的数据属性

控件数据属性:数据来源、输入掩码、有效性规则、有效性文本…… 窗体数据属性:记录源、排序依据、允许编辑、数据入口……

3、常用的其他属性 ***名称***、控件其他属性:状态栏文字、自动TAB键、控件提示文本…… 窗体其他属性:独占方式、弹出方式、循环……

四、窗体和控件的事件

1、键盘事件:键按下、键释放、击键

2、鼠标事件:单击、双击、鼠标按下、鼠标移动、鼠标释放

3、对象事件:获得焦点、失去焦点、更新前、更新后、更改

4、窗口事件:打开、关闭、加载

5、操作事件:删除、插入前、插入后、成为当前、不在列表中、确认删除前、确认删除后 第十课时:练习

课堂作业:请学生将练习过程中完成的课堂作业上交教师机。课后小结:

第5讲 窗体(2)

知识目标:

学会窗体的美化和设计 技能(能力)目标:

培养学生运用所学知识与技能,主动探究,解决实际问题的能力。培养学生的创新意识、创新能力。情感目标、价值观目标:

培养大家养成勇于探究新知识,不断地提高自身的审美意识,树立正确的人生观和价值。通过实例操作引导学生积极参与,培养学生的学习兴趣,在活动中的互相帮助不但增进了同学间的友情也培养了他们协同工作的能力。教学重点:

使用各种方法设计和修改窗体格式 教学难点: 选中工具的使用。教学方法和工具:

讲解法,讨论法,练习法,使用多媒体教学工具。教学过程: 第一课时: 8.1、美化窗体

一、自动套用格式

二、窗体的属性

三、添加当前日期和时间

四、格式调整: 对齐方式 第二课时:练习

5.如何学好Access数据库编程 篇五

这与数据库编程有什么关系?关系可大了。同志们学过Pascal、BASIC、C(C++)没有?如果没有,FOXBASE、FOXPRO应该学过吧?按以上这些语言编程,都是过程化的,说白一点就是一个数据一个数据、一条记录一条记录去处理(FOXBASE、FOXPRO不完全这样,但书上也经常是这样介绍的),当初我接触ACCESS 97时,一下子没有了IF、FOR这些语句(指数据处理),都用SQL语句,真是找不到北了,好在我学SQL语言时,也尽量忘掉这个IF、FOR,到我忘得差不多时,功夫也进了一大步,原来要编一大段程序,现在一两条SQL语句搞定,就算用多几条SQL语句,由于是在图形界面下做,可视化操作,拉拉扯扯,再修改一下生成的SQL语句,也就省事多了。

由于ACCESS具备完整的SQL语言(FOXBASE没有、FOXPRO不完整),我从ACCESS 97开始用ACCESS编程,到现在为止,DAO、ADO很少用,加上最近从爱赛思上接触的一些技术,基本上不用DAO、ADO都可以了,可以从我的“未完工的库存管理”中看出,只是在特殊情况下才偶尔用一下。(少用,但不是不用,还得学,不要误解)

如何学好数据库编程?下面介绍一下本人的一些经验,仅供参考:

1.首先要把原来一个数据一个数据、一条记录一条记录的数据处理方式忘掉,越彻底越好。

现在用成批处理了。少用记录集一条记录一条记录地处理,尽量用SQL语句。

2.学好关系数据库的理论,尤其是规范化理论,表的设计一定要规范化,最起码要规范化到第三范式,

集合运算(并、交、差)。关系运算(选择、投影、连接)。其中连接与规范化是紧密结合的。

3.运用面向对象的技术:面向对象的分析OOA、面向对象的设计OOD、面向对象的编程OOP,根据表的关系,用窗体和子窗体、报表和子报表,仿真面向对象,这样可以增加程序的可读性和可维护性。(这是高级技术,同志们不要轻视,做大项目你就知道有用了)

4.用查询时,通常一步做不出来,可以分几步做,本人通常是这么做的,从我给网友回复的例子中也可以看得出。为什么要这样做?(1)有些是SQL语言的限制,没办法一步做出来,逼的;(2)可以检查每一步查询的结果,容易调试;(3)增加可读性,便于日后维护。

5.查询的结果用窗体显示或用报表打印,两者的技术差不多。通常改变打开窗体或报表的条件就可控制显示或打印的记录范围。另外用查询做数据源时,动态改变查询中的SQL语句,比在查询中引用窗体的控件要方便,因为SQL语句生成是在VBA中,可以先存放在字符变量中,然后再更新查询的SQL语句,这样就可以用断点来检查变量值对不对,如果在查询中引用窗体的控件,尤其是包含IIF函数时,调试是很困难的。

6.开发一个系统,首先要解决技术问题,即算法,用简单例子,把算法弄懂了,再详细设计,这一点从网友的提问中可以看出,有很多人问题表达不清楚,有的人其中夹了很多与算法无关的东西,尤其是很专业的东西,别人不容易看得明白,由于算法没搞清楚,程序就无法编了。

6.(四)ACCESS数据库的结构 篇六

注意:以下过程使用的是罗斯文示例数据库中的示例。罗斯文示例数据库的默认位置是 Program FilesMicrosoft OfficeOffice10Samples 文件夹。如果您的 Samples 文件夹中没有 Northwind.mdb 文件,或者您需要有关打开罗斯文的详细信息,请在 Office 助手或“帮助”窗口的“应答向导”选项卡中输入“打开罗斯文示例数据库”,然后单击“搜索”。

定期将记录从一个表归档到另一个表

1、使用“复制”和“粘贴”命令,将要归档的表复制到新表中。仅复制结构,不复制数据。

例如,将“产品”表的结构复制到名称为“产品归档”的新表中。

2、创建一个查询,使其包含“产品”表中所有的字段,并将记录附加到“产品归档”表中,

设置条件来指定要归档的记录的子集。

例如,创建一个名为“产品附加”的附加查询,通过将“中止”字段的“条件”单元格设置为 -1,就可以仅向“产品归档”表中附加中止的条目。

提示:如果每次归档的条件都会发生变化,那么您可以创建一个带有提示参数的附加查询,这样在每次运行查询时就可以输入不同的条件。

3、创建一个删除查询,此查询的条件与步骤 2 中为附加查询指定的条件相同。您将使用此查询从“产品”表中删除在步骤 2 中附加的记录。

例如,创建一个“产品删除”删除查询,此查询的条件与“产品附加”附加查询所指定的条件相同。

注意:如果您创建一个提示输入参数的附加查询,那么您应该也创建一个提示输入相同参数的删除查询,并且对每次运行查询出现的参数提示,要确保输入相同的值。

4、创建一个宏,使其先运行附加查询,然后运行删除查询。

例如,创建一个名为“产品附加记录”的宏,在宏的第一行用 OpenQuery 操作来运行附加查询,在宏的第二行用 OpenQuery 操作来运行删除查询。

7.(四)ACCESS数据库的结构 篇七

“ACCESS数据库应用”课程作为面向对象的计算机编程语言类课程, 正在由我校管理学院各专业转入到我校大部分非计算机专业的教学计划中, 同时已成为我校学生在全国高等院校计算机等级考试中的重点二级考试内容。如何在教学过程中既可以提高该课程的教学质量和教学效果, 同时又能提高学生的二级通过率, 是目前教师主要考虑的问题, 本文就是针对这一主要问题进行深入的探讨。

2. 课程的特点及存在问题

2.1“ACCESS数据库应用”课程的特点

Access是微软公司推出的基于windows的桌面关系数据库管理系统, 是Office系列应用软件之一, 也是当前各大高校非计算机专业学生学习的一种流行的数据库管理系统。

Access作为一个数据库管理系统, 实质上是一个面向对象的可视化数据库管理工具, 它采用面向对象的方式将数据库系统中的各项功能对象化, 通过数据库对象来管理信息, 其管理的信息分别是表、查询、窗体、报表、页、宏和模块七大对象, 同时也提供了多种向导、生成器、模板, 把数据存储、数据查询、界面设计、报表生成等操作规范化, 使得普通用户在不必编写代码前提下, 就可以完成大部分数据管理的任务。所以目前大部分高校的许多专业都开设了Access课程, 通过完该门课程学习, 使得学生们能够开发一个完整的小型数据库系统, 同时可以让学生以通过计算机二级等级考试的方式来达到大学生应具备的计算机等级二级水平。

2.2“ACCESS数据库应用”课程目前教学存在的问题

虽然该软件的学习相对于其他数据库管理系统软件来说简单, 但对于非计算机专业的大部分学生来说在学习过程中依然存在着很大的困难, 非计算机专业的学生计算机基础相对较差, 对于计算机方面的术语理解能力差, 而且大部分同学在计算机动手操作上的能力也比较弱, 另外非计算机专业的学生存在着思想误区, 认为该课程与自己的专业无关, 根本不愿意花太多的时间来学习该门课程, 即便是学了也不能够真正达到学以致用, 并且很快就会忘记。

另外目前的教学过程中, 上课的老师都是按照数据库的7个对象分章节进行授课, 讲到每个章节时, 老师们都会先介绍下该章节的主要内容, 对于每个知识点都先进行概念等的介绍, 然后再进行举例演示讲解, 讲完后给学生点时间进行练习巩固, 最后进行总结, 布置作业。看似这样的教学比较合理, 但在学习的过程中学生们会遇到语句、语法等, 而在讲解的过程中老师若讲的太多、太细, 学生们就没有时间去练习, 并且学生也会产生学习疲劳;虽然学习完了所有的数据库对象, 但学生们其实根本不知道该软件到底实现的功能是什么, 学习该课程的目的是什么, 所以整个教学过程中没有激发学生学习兴趣的亮点, 所以笔者在教学的过程中不断地尝试改变课堂教学模式, 从而真正地提高该课程的教学效果和学生们学习的兴趣、主动性。

3. 案例教学法

数据库课程的主要教学内容是设计和开发一个完整的小型数据库系统, 如果使用比较传统的讲授方法, 每节课仅仅课上讲授知识, 再列举简单示例, 学生的学习必然会枯燥无味, 也只能被动接受而缺乏学习的热情和主动性。若在课上把一些真实的、贴近生活的、典型的案例展现在学生面前, 学生们在感官上首先可以得到一个吸引, 同时再要求他们设身处地去做出反应, 那么学生在分析案例的同时, 不仅可以较容易接受和理解所学的理论知识, 同时可以通过案例教学的方法启发、培养学生的创造性思维能力, 从而让学生通过所学的理论知识很快地运用到实际生活中, 促进了理论向实践的转化, 真正达到理论与实践的结合的目的。如何有效地在课上采用案例教学法本人有以下建议:

3.1 合适的教学案例

对于初次学习数据库的学生, 尤其是非计算机专业的学生, 存在着两种心理, 一是学习了该课程后, 在以后的工作中其无用武之地, 二是该课程中的程序设计这块学习起来太困难。那么合适的案例在整个教学起到了决定性的作用, 学生是否被吸引, 就看老师能不能用合适的案例来引导学生。刚开始的教学中, 老师应该选取几个最贴近学生生活的案例, 例如:图书管理系统, 该系统学生们都很熟悉, 在大学校园里, 图书馆是学生们几乎每天都要去的一个公共场所, 在那里, 学校为学生专门提供了用于检索书籍的公共电脑, 所以, 老师应该首先向学生展示Access开发的数据库管理系统, 调动一下学生的兴趣, 然后再对这些数据库管理系统进行简单地归纳总结, 让学生知道不管什么样的数据库系统, 其功能模块基本上都类似, 实现起来并不是很困难。从而让学生打消抵触该课程的心理, 慢慢激发学生学习的热情和创造思维的欲望。

3.2 案例的巧妙分析

老师在案例分析的过程中, 都应本着简单明了的方式展开, 老师最好引导学生对该案例进行分析, 把案例中的内容与案例涉及到的相关理论知识联系起来。在通过教师机演示给学生分析案例时, 老师关键要做好启发引导工作, 让学生成为案例讨论的真正的主角, 让学生灵活地, 大胆地运用所学的知识积极地思考问题, 同时老师要创造一个和谐的课堂氛围, 鼓励学生们相互之间要交流。对于学生的大胆回答要及时加以鼓励, 即使学生的回答偏离了正确答案, 也不要急于评判, 老师可以以反问或帮助他们剖析答案, 让他们及时地自我更正, 使学生在没有压力和顾忌的良好心态下探索问题的答案。在案例分析时会有很多是以前没学过的知识或技能技巧, 即隐含了新的知识点, 这时就需要老师多使用各种信息技术手段, 创设任务情景, 通过讲解、示范等多种教学方法, 尽量不让学生对所面对的任务产生太大的畏难以至于抵触的情绪。老师要争取做到让学生在情境中学习, 在任务的分解过程中获取知识, 提高分析问题的能力。实际上, 任何一个数据库管理系统设计与实现的过程就是不断分解任务的过程。例如, 图书馆的图书管理系统, 老师尝试着引导学生通过联系实际情况对案例提出问题:图书管理需要管理书库里的书籍, 包括书籍信息的录入、书籍信息的查询等功能;对于管理者来说, 书籍的管理还可以体现在增加、删除、修改书籍信息等功能的实现;在使用过程中有时需要打印表格的需求, 所以还得有打印的功能;如果该系统规定专人负责, 还需要规定用户名和登录密码, 体现出系统的保密性;对于系统界面来说, 合理性和美观性的设计也尤为重要等等。随着任务分析的深入细致, 使整个系统功能不断完善, 结构也不断地变得更加清晰。

3.3 实践教学环节的加强

Access数据库应用是一门实践性较强的课程, 而本校采用的是一体化教学的方式授课, 理论与实践相结合, 老师在授课时往往会出现理论知识的传授超过学生的实践, 这样学生不能较好地吸收课上的内容, 而学生通过上机实践的过程, 才真正理解消化课堂上的教学内容, 加深对Access数据库的了解。所以在整个Access数据库应用课程的教学中, 老师必须合理安排课堂理论教学和学生上机实践的时间。

在课堂上, 学生从听老师讲, 或者看老师操作到自己动手解决问题实际上存在着相当大的距离, 有时候会认为老师演示的内容是一个非常简单而且又容易理解的一个问题, 可通过上机实践却发现, 实际操作起来并不是那么容易的。例如:学生在设计窗体界面时 (图1所示) , 虽然界面设计比较简单, 只是添加些基本控件, 但是学生在亲自动手操作时, 频频出现问题, 而且问题基本一致。问题如下:

(1) 界面设计布局不合理, 不美观;

(2) 属性设置时不能及时地找到对应的属性名称;

(3) 完成时间较长。

所以学生课堂上的实践环节非常重要, 学生们只有从亲自动手操作中才能找出自己不足之处, 也从中能够真正锻炼实际操作能力, 老师在设计实践教学环节时应尽量多给学生安排些时间, 让他们从实践中找出自己最薄弱之处, 真正地解决实际问题。而老师在其中也可以及时发现学生在学习中存在的问题, 同时可以培养学生独立地利用计算机解决实际问题的能力, 从而动态地调节课堂教学的教学内容和进度, 形成一个良好的教学循环。

3.4 任务的驱动

通过几次的课堂教学, 学生对数据库管理系统已有了基本的认识, 老师对课上完成的系统进行归纳总结, 同时对学生提前报备, 向学生提出任务。首先给学生时间课下思考, 尝试着想一个比较适合自己的系统, 然后再在课上花些时间创造一个和谐的氛围, 让学生感觉不到一丝的紧张, 而是放松、大胆地想象、构思的一种状态, 在这样的环境中与学生共同讨论或学生根据自身需求自主提出, 或是老师给出一些建议来决定每个同学的任务。例如:对于工商管理专业的学生来说, 建议尝试去设计一个超市管理的Access数据库系统;对于酒店管理专业的学生来说, 建议尝试去设计一个酒店管理的Access数据库系统;对于药学专业的学生来说, 建议尝试设计一个药品管理的Access数据库系统;而对于平时喜欢去网吧的学生来说, 建议尝试去设计一个网吧管理的Access数据库系统等等。这些任务的提出可能更符合每个学生的个性和兴趣特点, 使学生根据自己内在的需要去探究和学习。

那么在Access数据库的过程教学中, 学生根据自己的实际需求完成一个数据库系统的设计与实现, 强调的是从需求分析、数据搜集、数据整理、系统设计到系统实现的整个过程。该过程是一个大的任务, 将其拆解成若干个小模块或任务, 学生可以随着以后每次课的学习进程将其分步骤完成。而这一过程可以充分发挥学生自身的积极性、主动性和创造性, 从而培养出独立探索、勇于开拓进取的自学能力。

通过任务的驱动, 不仅学生能够在课程学习的过程中解决自己的实际问题, 而且老师也可以在最后收到学生对这门课学习情况的一份满意答卷。

4. 结束语

Access是面向对象程序设计的数据库管理系统软件, 而该课程是一门理论和实践相结合的课程, 既要求老师加强课堂理论知识的教学, 也要加强学生实践环节的教学。本着提高教学质量和效果, 同时提高学生动手能力, 培养学生勇于创新、探索的学习精神的目的, 笔者不断总结教学经验, 精心设计教学案例、加强实践教学环节, 以任务驱动学习, 并及时地调整课堂教学方法, 使学生通过一学期的学习不仅能熟练掌握数据库管理系统的理论知识, 而且也能够独立地使用该软件开发出真正能解决实际问题的数据库系统。

参考文献

[1]朱秀丽, 陈劲松.案例教学法在Access数据库技术教学中的应用探索[J].煤炭技术, 2010, 29 (4) :228-230.

[2]孙宝林, 崔洪芳.数据库应用技术[M].北京:清华大学出版社.2010.9

8.(四)ACCESS数据库的结构 篇八

关键词:Access数据库;安全性

1引言

Access数据库具有操作简单、界面友好等特点,是中小型网站数据库的首选。Access数据库在带来便捷的同时,也带来了不容忽视的安全问题。攻击者一旦找到数据库文件的存储路径和文件名,后缀名为“mdb”的Access数据库文件就会被下载,后果不可估量。

2 Access数据库安全性的弱点

Access数据库在安全性方面,其弱点具体表现为:

①安全性不够,用户级密码容易破解;

②并发数为255,对高强度操作适应性差,若服务器配置不高,网络不畅通,编程的方法不佳,多人同时访问就能导致MDB损坏;

③每个数据库文件最大限制只有2G,不适合做大型网站的数据库。

3解决网站Access数据库安全性的常见方法

根据本人在动态网站开发过程中的实际经验,为保障后台数据库的安全,将防止Access数据库被下载的方法归纳如下:

方法一:取复杂的数据库文件名

此方法最省事。若攻击者通过第三方途径获取到数据库的路径,此方法便失效。另外,数据文件通常都较大,起再复杂的文件名也容易分析出来,故保密性为最低。

方法二:数据库名后缀改为asa、asp等

这是最常用的方法。将数据库扩展名更改为asa或asp后,还需配合一些其他的设置才能更安全。如在数据库中新建表,表名任取,在表中添加一个OLE对象的字段,然后添加一个记录,插入事先建好的文本文件(内容为“<%”或者“%>”)。

其原理是:在改名后的库文件中加入“<%”或“%>”,llS就会按ASP语法来解析,就会报告500错误,即可防止下载Access数据库。

方法三:数据库名前加“#”

在数据库文件名前加上#,然后修改数据库连接文件(如:oonnasp)中的数据库地址。其原理是下载的时候只能识别#号前名的部分。对于后面的自动去掉。另外,在数据库文件名中保留一些空格也起到类似作用,由于HTTP协议对地址解析的特殊性,空格会被编码为“%”。即使暴露了数据库地址,一般情况下也无法下载到原始数据库文件。

方法四:加密数据库

首先选取“工具”一“安全”一“加密/解密数据库”,选取数据库(如:datamdb),单击“确定”,出现“数据库加密后另存为”的窗口,存为:datal mdb。以上的动作对数据库文件加以编码,目的是为了防止他人查看数据库文件的内容。

接下来为数据库加密,先打开经过编码了的datal mdb,选择“独占”方式。然后选取菜单中的“工具一安全一设置数据库密码”,输入密码即可。即使他人得到了datal mdb文件,没有密码就无法看到datal mdb的内容。

加密后要修改数据库连接页,如:corm open“d river=fmicrosoftaccess driver(。mdb)}:uid=admin:pwd=数据库密码;dbq=数据库路径”。

在数据库连接页中的密码没有被泄露的情况下,数据库即使被人下载了,也无法打开。

方法五:数据库放在Web目录外或将数据库连接文件放到其他虚拟目录下

若Web目录是e:\webroot,可以把数据库放到e\data文件夹内,在e:\webroot里的数据库连接页中修改数据库连接地址为:“/data/数据库名”的形式,这样数据库可以正常调用,但无法下载。因为它不在Web目录里!

方法六:使用ODBC数据源

在ASP等程序设计中,如果有条件,应尽量使用ODBC数據源,不要把数据库名写在程序中,否则,数据库名将随ASP源代码的失密而一同被暴露。

如果使用ODBC数据源,就不会存在这样的问题了。但这样处理的结果是:效率很低。速度变慢;迁移也不方便,必须重新设置数据源。

方法七:添加数据库名的(如MDB的)扩展映射

通过修改llS设置来实现,适合有llS控制权的管理员。只要修改一处,整个站点的数据库都可以防止被下载。

在lIS属性—主目录—配置—映射—应用程序扩展那里添加mdb文件的应用解析。选择的DLL(或EXE等),最好不要选择aspdll。这样别人下载数据库时就出现404或500等错误。

4小结

9.(四)ACCESS数据库的结构 篇九

暴库的方式有多种多样,我知道的就有3种以上,常见的暴的方法有:%5c类暴,conn.asp暴,ddos暴等等.

这篇文章我主要讲%5c和conn.asp暴.

可以说,这篇是对临国越南首相写的文章的补充.

1.%5c暴法

下面我们先用肉鸡来试一下

www.yianxin.com/e-market/bbs/Select.asp

暴:

www.yianxin.com/e-market/bbs%5cSelect.asp

返回信息如下:

microsoft jet database engine 错误 ’80004005’

’d:wwwyianxin.comgr7shg3l26e-marketdatayianxinlzn.asp’不是一个有效的路径, 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。

/e-market/bbs/conn.asp,行3

我们来看一下真实路径和暴出的路径

d:wwwyianxin.comgr7shg3l26e-marketdatayianxinlzn.asp暴出的路径

d:wwwyianxin.comgr7shg3l26e-marketbsdatayianxinlzn.asp真实的路径

对比后我们发现暴出来的少了一个bbs

这里我们还发现%5c就相当于一个休止符返回的路径就变成

绝对路径+%5c后面的内容

我们再来看一下对暴不出来的分析

肉鸡: www.guilin.com.cn/renrenbbs/body.asp?id=516

暴url: www.guilin.com.cn/renrenbbs%5cbody.asp?id=516

返回内容如图三所示

此主题相关图片如下:

肉鸡: www.jijiahao.com/guest/default.asp

暴url: www.jijiahao.com/guest%5cdefault.asp

返回内容如图四所示

此主题相关图片如下:

我们再来分析一下成功与失败的原因:

www.yianxin.com/e-market/bbs%5cSelect.asp

会暴成功库,我们打开Select.asp我们会发现里面

也就是说有调用到其它文件

所以当你用%5c时,返回路径也就变成了

绝对路径+%5c后面的Select.asp,Select.asp又调用到路径库data/renren.asp

所以返回的路径就变成了

绝对路径+路据库路径,而在绝对路径和路据库路径,我们知道有guest这个目录,

这个时候因为绝对路径+路据库路径不存在(绝对路径+guest+路据库路径才存在)

所以也就返回了,我们所看到的出错信息。

现在再来分析一下失败的原因:

我个人认为是因为iis双解码的原因,

例如,对于’’这个字符,正常编码后是%5c。这三个字符对应的编码为:

’%’ = %25

’5’ = %35

’c’ = %63

如果要对这三个字符再做一次编码,就可以有多种形式,例如:

%255c

%%35c

%%35%63

%25%35%63

...

因此,”..“就可以表示成”..%255c“或”..%%35c“等等形式。

在经过第一次解码之后,变成”..%5c“。iis会认为这是一个正常的字符串,不会违反安全规则检查。而在第二次被解码之后,就会变成”..“。因此攻击者就可以使用”..“来进行目录遍历,执行web目录之外的任意程序。

详细的大家可以看下面的资料参考

我们再来分析图三和图四失败的原因就会发现,他可能解析成../,通过图的比较可以分析出来,

难道这时就暴不出来了吗,当然不是,这要我们精心构造。

下面还会分析到。

下面我们来纠正一下网上常见的错误观点。

1.不一定要asp?id=的才可以暴,只要有调用其它有文件就有可能暴

2.不一定是access,也可以是mssql,我就成功过,下面大总结的时候就会分析到只要是iis就有可能成功

3.不一定要调用到数据库,因为%5c的关键是调用,而不是一定是数据库.

4.理论上讲,根目录通过精心构造是可以暴的,但有些人说的通过..%5c的却一定暴不出来,因为返回是

取%5c后面的与前面的无关

5.并不是说多层目录就暴的成功率就高,%5c能否成功关键是看系统怎么解析,另外我个人觉得能否暴出

与程序无关,更多的与系统有关,不信大家去百度找同一板本的人人留言板,你就会发现有的可以暴

出来,有的却暴不了出来。

好了,上面是对%5c暴库的初步了解

2.conn.asp暴

conn.asp暴可以说,与系统无关,是因为目录的关系。

我用netbox架设同样可以暴,而%5c是iis解码错误,有那个漏洞的一定是windows系统.

同样,我们还是通过比较来说明问题

肉鸡:192.168.0.55/ren/

暴1 : 192.168.0.55/ren/images/conn.asp

暴2 : 192.168.0.55/ren/conn.asp

其中暴1里面的conn.asp是从暴2里面复制过去的

返回内容:

暴1:

microsoft jet database engine ’80004005’

’c:documents and settingsxiaoqiu桌面wwwroot enimagesdata enren.asp’不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。

wwwroot enimagesconn.asp, line 3

暴2:

全是白白。

再来分析为什么conn.asp可以暴出来

conn.asp代码如下:

<%

set conn=server.createobject(”adodb.connection“)

conn.open=”provider=microsoft.jet.oledb.4.0;data source=“&server.mappath(”data/renren.asp“)

set rs=server.createobject(”adodb.recordset“)

function connclose

conn.close

set conn = nothing

end function

function errmsg(message)

session(”err“)=message

response.redirect”err.asp“

end function

%>

其中最重要的是

set conn=server.createobject(”adodb.connection“)

conn.open=”provider=microsoft.jet.oledb.4.0;data source=“&server.mappath(”data/renren.asp“)

这两句,这两句也是能暴出的关键.

我们再来先看暴出的路径和真实路径的***别

c:documents and settingsxiaoqiu桌面wwwroot enimagesdata enren.asp 暴出的路径

c:documents and settingsxiaoqiu桌面wwwroot endata enren.asp真实的路径

我们会发现多了一个images,这是因为,conn.asp的返回路径是

绝对路径+conn.asp前的+conn.asp连接的数据库路径

像上面的就等于绝对路径c:documents and settingsxiaoqiu桌面wwwroot+conn.asp前面的ren/images+

data enren.asp也就是数据库路径,合起来就是

c:documents and settingsxiaoqiu桌面wwwroot+renimages+data enren.asp

不同连接语法返回路径不一定一样,但是上面的连接语句返回的却一定是绝对路径

下面我们再来验证一下我们的正确性,把下面的内容保存为任何一个经过asp.dll解析过扩展的文件,如

linzi.asp,linzi.cdx等等,代码内容如下:

<%

set conn=server.createobject(”adodb.connection“)

conn.open=”provider=microsoft.jet.oledb.4.0;data source=“&server.mappath(”data/renren.asp“)

%>

这个时候你把他放在任何一个目录,只要不是ren目录里,也就是留言簿的根目录,都可以暴出绝对路径,

这个时候你可能会问,难道根目录就暴不出了吗?答案是可以暴出来。你把上面代码里的

data/renren.asp改成任何一个不存在的目录或文件,也同样可以暴出来,例如,我改成

data123/renren.asp,因为data123不存在,所以就暴了出来,返回内容如下

microsoft jet database engine ’80004005’

’c:documents and settingsxiaoqiu桌面wwwroot endata123 enren.asp’不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。

wwwroot en2.asp, line 3

我们还可以发现,并没有少目录,只不过目录出错,经过一大堆的测试,我个人总结出conn.asp暴成功的

原因以及对网上一些错误观点的个人看法:

1.要暴不一定要调用到数据库,但是要暴库,一定要调到到数据库或与数据库有关的文件。

2.不一定conn.asp才可以暴,只要有调用其它文件,造成目录错误的都可以报,如动力的除了inc/conn.asp

外,放在inc里面的其它文件同样也可以暴。

3.总结conn.asp的暴原因是你返回的目录和真实的目录不一定,或者也可以说是不存在。

3.暴的简单利用:

1.下载数据库进后台找上传点,然后得到webshell

2.往数据库里面插入asp小马,详细的可以参考angel的文章《把mdb改成asp带来的灾难》

3.access跨库查询

如语句:

Select count(*) from dv_admin in ’d:wwwdatadvbbs7.mdb’

4.注入时的利用,如mssql backup a shell

5.绕过后台验证,详细的可以见我收集的暴库文摘

好了,就这么些吧,上面可以说只是暴后攻击的冰山一角,当你再深入下去,你会发现还有更恐怖

的东西在后面,2k+sp4有人利用双解码成功了,这也只是一角。

还有这里要说一下的是,有的人说用asp.dll解析mdb用来防下载,事实上稍微不笨的人,就会发现这是

一种愚蠢的做法,当你用asp.dll解析mdb后,你把newmmm.asp改成newmm.mdb上传后,就相当于一个

newmm.asp,因为asp.dll解析过的扩展只要里面有asp语句就会被执行,这和cer,cdx等,一个道理.

我个人认为防下载的最好方法是往数据库里加入防下载表段<% zhenzhen520 <%,只要插入这个就可以

防下载了,懂点asp的人都知道,<% zhenzhen520 <%放到数据库里,一定会发生语法错误,因为没有%>

结束符,当然你可以说,可以注是,事实上,注是是不可能的事,除非你得到了shell,修改数据库,否

则你就别想了,因为就算让你加上了两个%>结束符,但是因为<%%>里面的东西不满足asp语法,也会发生

500错误。不信?要不你试试动网,动网的数据库就是这样。

4.防范:

1.最好的办法临在文章里也说过了,就是屏所有的出错。

2.加容错语句,不过要注意的是,你加了容错,只能是你加的那个文件暴不出来,但并不代表,其它文件

暴不出来。

3.把数据库在非相对路径下,例如:你本来的路据库路径是:c:wwwdatadvbbs.asp,这时你可以把数

据库改放在c:里,这样就下载不到数据库。

好了,防的方法就说到这里了。因为我说的都是废话,大家都看过的.

5.%5c暴与conn.asp总结:

可以说%5c暴是因为调用文件出错,而conn.asp暴是因为返回的路径出错或不存在。

6.conn.asp与%5c的结合:

可以说如何构造是入侵时能不能暴出的关键。

现在我们假设,guest目录放在c:www下,而conn.asp放在c:wwwguestconn.asp,直接调用

192.168.0.13/guest/conn.asp不会报错,因为返回路径是正确的,通过上面的,我们可以知道

conn.asp暴是因为返回路不存在。现在我们对比一下%5c和conn.asp的不同返回路径

1.%5c: 绝对路径+%5c后面的内容

2.conn.asp : 绝对路径+conn.asp前面的相对路径+conn.asp调用的数据库路径

两者结合起来,假设192.168.1.13/guest%5ccoonn.asp

那么返回路径也就变成了

绝对路径+conn.asp,但实际在入侵之时,我们会发现有的时候并不是,这个时候大家别忘了双解码

..............................................................................................................................................................................

如何防止ACCESS数据库被暴

1.发挥你的想象力 修改数据库文件名??

不用说,这是最最偷懒的方法,但是若攻击者通过第三方途径获得了数据库的路径),就玩完了。比如说攻击者本来只能拿到list权,结果意外看到了数据库路径,就可以冠冕堂皇地把数据库下载回去研究了。另外,数据文件通常大小都比较大,起再隐蔽的文件名都瞒不了人。故保密性为最低。??

2.数据库名后缀改为ASA、ASP等??

此法须配合一些要进行一些设置,否则就会出现本文开头的那种情况??

(1)二进制字段添加(此招我还没有炼成-_-+)。??

(2)在这个文件中加入<%或%>,IIS就会按ASP语法来解析,然后就会报告500错误,自然不能下载了。可是如果只是简单的在数据库的文本或者备注字段加入<%是没用的,因为ACCESS会对其中的内容进行处理,在数据库里他会以< %的形式存在,无效!正确的方法是将<%存入OLE对象字段里,这样我们的目的就能达到了。??

作方法:??

?? 首先,用notepad新建一个内容为 <% 的文本文件,随便起个名字存档。??

接着,用Access打开您的数据库文件,新建一个表,随便起个名字,在表中添加一个OLE对象的字段,然后添加一个记录,插入之前建立的文本文件,如果操作正确的话,应该可以看到一个新的名为“数据包"的记录。即可??

3.数据库名前加“#”??

只需要把数据库文件前名加上#、然后修改数据库连接文件(如conn.asp)中的数据库地址。原理是下载的时候只能识别 #号前名的部分,对于后面的自动去掉,比如你要下载:www.pcdigest.com/date/#123.mdb(假设存在的话)。无论是IE还是FLASHGET等下到的都是www.test.com/date/(index.asp、default.jsp等你在IIS设置的首页文档)????

另外在数据库文件名中保留一些空格也起到类似作用,由于HTTP协议对地址解析的特殊性,空格会被编码为”%“,如www.test.com/date/123??;456.mdb,下载的时www.test.com/date/123 %456.mdb,

而我们的目录就根本没有123%456.mdb这个文件,所以下载也是无效的这样的修改后,即使你暴露了数据库地址,一般情况下别人也是无法下载!??

4.加密数据库??

首先在选取”工具->安全->加密/解密数据库,选取数据库(如:employer.mdb),然后接确定,接着会出现“数据库加密后另存为”的窗口,存为:employer1.mdb。接着employer.mdb就会被编码,然后存为employer1.mdb..要注意的是,以上的动作并不是对数据库设置密码,而只是对数据库文件加以编码,目的是为了防止他人使用别的工具来查看数据库文件的内容。??

?? 接下来我们为数据库加密,首先以打开经过编码了的??employer1.mdb,在打开时,选择“独占”方式。然后选取功能表的“工具->安全->设置数据库密码”, 接着输入密码即可。这样即使他人得到了employer1.mdb文件,没有密码他是无法看到 employer1.mdb的。????

加密后要修改数据库连接页, 如:??

conn.open “driver={microsoft access driver (*.mdb)};uid=admin;pwd=数据库密码;dbq=数据库路径”??

这样修改后,数据库即使被人下载了,别人也无法打开(前提是你的数据库连接页中的密码没有被泄露)??

但值得注意的是,由于Access数据库的加密机制比较简单,即使设置了密码,解密也很容易。该数据库系统通过将用户输入的密码与某一固定密钥进行“异或”来形成一个加密串,并将其存储在*.mdb文件从地址“&H42”开始的区域内。所以一个好的程序员可以轻松制作一个几十行的小程序就可以轻松地获得任何Access数据库的密码。因此,只要数据库被下载,其信息安全依然是个未知数。????

5.数据库放在WEB目录外或将数据库连接文件放到其他虚拟目录下??

如你的WEB目录是e:/webroot,可以把数据库放到e:/data这个文件夹里,在e:/webroot里的数据库连接页中修改数据库连接地址为:“../data/数据库名” 的形式,这样数据库可以正常调用,但是无法下载的,因为它不在WEB目录里!这个方法一般也不适合购买虚拟空间的用户。??

6.使用ODBC数据源。??

在ASP等程序设计中,如果有条件,应尽量使用ODBC数据源,不要把数据库名写在程序中,否则,数据库名将随ASP源代码的失密而一同失密,例如: DBPath = Server.MapPath(“../123/abc/asfadf.mdb ”)????

conn.open “driver={Microsoft Access Driver (*.mdb)};dbq=”& DBPath????

可见,即使数据库名字起得再怪异,隐藏的目录再深,ASP源代码失密后,也很容易被下载下来。如果使用ODBC数据源,就不会存在这样的问题了: conn.open “ODBC-DSN名” ,不过这样是比较烦的,目录移动的话又要重新设置数据源了,更方便的方法请看第7,8法!??

7.添加数据库名的如MDB的扩展映射??

这个方法就是通过修改IIS设置来实现,适合有IIS控制权的朋友,不适合购买虚拟主机用户(除非管理员已经设置了)。这个方法我认为是目前最好的。只要修改一处,整个站点的数据库都可以防止被下载。无须修改代码即使暴露目标地址也可以防止下载。??

我们在IIS属性---主目录---配置---映射---应用程序扩展那里添加.mdb文件的应用解析。注意这里的选择的DLL(或EXE等)似乎也不是任意的,选择不当,这个MDB文件还是可以被下载的,??注意最好不要选择选择asp.dll等。你可以自己多测试下??

这样修改后下载数据库如:www.test.com/data/dvbbs6.mdb。就出现(404或500等错误)????

8:使用.net的优越性??

动网的木鸟就写过一个防非法下载文件的“WBAL 防盗链工具”。具体可以登陆www.9seek.com/WBAL/??;??

不过 那个只实现了防止非本地下载的 ,没有起到真正的防下载数据库的功能。不过这个方法已经跟5法差不多可以通过修改.NET文件,实现本地也不能下载!??

这几个方法中,只有第7和8个是统一性改的,一次修改配置后,整个站点的数据库都可以防止下载,其他几个就要分别修改数据库名和连接文件,比较麻烦,不过对于虚拟主机的朋友也只能这样了!??

其实第6个方法应该是第5个方法的扩展,可以实现特殊的功能,但对于不支持.net的主机或者怕设置麻烦的话,还是直接用第5个方法了,而且默认情况下第6个方法,依然可以通过复制连接到同主机的论坛或留言本发表,然后就可以点击下载了(因为这样的引用页是来自同主机的)??

9.利用NTFS分区的文件权限设置(by percyboy)??

?? 我们已经知道,ASP.NET 中使用 ADO.NET 访问数据库,通过 OleDb 的连接可以访问 Access 数据库DD我们非常常用的低端数据库之一。本文讨论了 ASP.NET 中可能看到的若干错误提示,从中看到 Access 和 Access XP 创建的数据库文件,在访问出现错误时会出现不太相同的错误提示。希望对大家有所帮助。另一个要点是,希望通过此文,使大家对 ASP.NET 中 Access 数据库文件的 NTFS 权限设置有所新的认识。????

(一)实验过程????

为了叙述方便,举个具体例子做个实验:应用程序为 /test ,数据库存放在 D:/wwwroot/test/data/db1.mdb,我们已经知道在 ASP.NET 中是以一个叫做 ASPNET 虚拟用户的身份访问数据库的,我们需要给这个账户以特定的 NTFS 权限才能使 ASP.NET 程序正常运行。????

为了得到最严格的 NTFS 权限设置,实验开始时我们给程序最低的 NTFS 权限:????

a) D:/wwwroot/test/data/ 文件夹的给用户ASPNET以如下权限:????

??????????????????????允许??拒绝????

???? 完全控制??????????□????□????

???? 修改??????????????□????□????

???? 读取及运行????????√????□????

???? 列出文件夹目录????√????□????

???? 读取??????????????√????□????

???? 写入??????????????□????□????

??b) D:/wwwroot/test/data/db1.mdb 文件本身给用户ASPNET以如下权限:????

???? √ 允许将来自父系的可继承权限传播给该对象????

1.1??对于某个只包含有“SELECT”命令的aspx程序,上述权限设置运行时无障碍,即:上述权限已经满足这类程序的运行了。????

1.2??对于包含有“UPDATE”“INSERT”“UPDATE”等命令的aspx程序,????

(a) 如果 db1.mdb 是 Access 2000 创建的数据库,出现如下错误:????

“/test”应用程序中的服务器错误。????

---------------------------------------????

Microsoft Jet 数据库引擎打不开文件’D:/wwwroot/test/data/’。 它已经被别的用户以独占方式打开,或没有查看数据的权限。????

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。????

异常详细信息: System.Data.OleDb.OleDbException: Microsoft Jet 数据库引擎打不开文件’D:/wwwroot/test/data/’。 它已经被别的用户以独占方式打开,或没有查看数据的权限。????

(b) 如果 db1.mdb 是 Access XP 创建的数据库,出现如下错误:????

“/test”应用程序中的服务器错误。????

----------------------------------------------????

操作必须使用一个可更新的查询。????

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。????

异常详细信息: System.Data.OleDb.OleDbException: 操作必须使用一个可更新的查询。????

(c) 原因初步分析:因为包含有“UPDATE”“INSERT”“UPDATE”等命令,需要对数据库文件本身进行写入操作,所以上述权限不能满足此需求,我们需要进一步放开权限。????

我们放开一些权限,????

a) D:/wwwroot/test/data/ 文件夹不变:????

??b) D:/wwwroot/test/data/db1.mdb 文件本身给用户ASPNET以如下权限:????

??????????????????????允许??拒绝????

???? 完全控制??????????□????□????

???? 修改??????????????□????□????

???? 读取及运行????????√????□????

???? 列出文件夹目录????√????□????

???? 读取??????????????√????□????

???? 写入??????????????√????□????

1.3??放开权限后继续实验,????

(a) 如果 db1.mdb 是 Access 2000 创建的数据库,出现如下错误:????

“/test”应用程序中的服务器错误。????

------------------------------------------????

不能锁定文件。????

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。????

异常详细信息: System.Data.OleDb.OleDbException: 不能锁定文件。????

(b) 如果 db1.mdb 是 Access XP 创建的数据库,没有出现错误。????

(c) 原因初步分析:我们发现在打开 Access 数据库时,同时会在所在目录生成一个同名的 *.ldb 文件,这是一个 Access 的锁定标记。鉴于此,我们猜测,用户 ASPNET 访问 Access 数据库时,也需要生成一个锁定标记,而该目录没有允许其写入,因此出错。至于 Access XP 创建的数据库为什么没有这个错误,原因还不得而知。????

我们进一步放开权限,????

a) D:/wwwroot/test/data/ 文件夹给用户ASPNET以如下权限:????

??????????????????????允许??拒绝????

???? 完全控制??????????□????□????

???? 修改??????????????□????□????

???? 读取及运行????????√????□????

???? 列出文件夹目录????√????□????

???? 读取??????????????√????□????

???? 写入??????????????√????□????

??b) D:/wwwroot/test/data/db1.mdb 文件本身给用户ASPNET以如下权限:????

???? √ 允许将来自父系的可继承权限传播给该对象????

1.4 继续实验,发现错误已解决,那么上面这个权限就是我们需要放开的“最低权限”。????

(a) 如果 db1.mdb 是 Access 2000 创建的数据库,我们会发现一个小问题:生成的 *.ldb 文件不会自己删除,访问后该文件依然存在,但这个问题不会影响 ASP.NET 的正常运行。????

(b) 如果 db1.mdb 是 Access XP 创建的数据库,没有出现上面类似问题。????

(c) 原因初步分析:我们仅仅是给了 ASPNET 以写入文件夹的权限,没有给它修改的权限,所以文件一旦写入,便无法修改其内容,*.ldb 也就删除不掉了。????

如果非要解决这个问题,进一步放开权限为:????

a) D:/wwwroot/test/data/ 文件夹给用户ASPNET以如下权限:????

??????????????????????允许??拒绝????

???? 完全控制??????????□????□????

???? 修改??????????????√????□????

???? 读取及运行????????√????□????

???? 列出文件夹目录????√????□????

???? 读取??????????????√????□????

???? 写入??????????????√????□????

??b) D:/wwwroot/test/data/db1.mdb 文件本身给用户ASPNET以如下权限:????

???? √ 允许将来自父系的可继承权限传播给该对象????

1.5??附带着,实验另一种情形:我们把 db1.mdb 在 Access 打开编辑,同时访问 ASP.NET。????

(a) 如果 db1.mdb 是 Access 2000 创建的数据库,我们发现并没有出现什么问题。????

(b) 如果 db1.mdb 是 Access XP 创建的数据库,出现如下错误:????

“/zhao”应用程序中的服务器错误。????

------------------------------------------------????

不能使用 ’’;文件已在使用中。????

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。????

异常详细信息: System.Data.OleDb.OleDbException: 不能使用 ’’;文件已在使用中。????

(c) 原因初步分析:Access 数据库是单用户单线程的数据库,我们在 Access 里面打开编辑数据库文件时其实是以当前 Windows 用户(比如Administrator)身份打开数据库,而 ASP.NET 默认使用的是 ASPNET 虚拟用户(隶属于 Users 组),级别低于 Administrator,无法和 Administrator “抢夺”权限,所以出现冲突错误。至于 Access 2000 忽略这个问题的情形我们也不必做讨论了,可能是 Access 2000 没有考虑那么多因素吧。????

1.6??再附带一种情形:将 db1.mdb 的属性改为“只读”,无论是 Access 2000 还是 Access XP 都将分别出现与 1.2 中各自的错误相同的错误提示。????

(二)实验结论????

(1) 我们首先再次总结一下 Access 数据库文件的 NTFS 权限设置的缘起:????

??在 ASP.NET 中默认是以一个叫做 ASPNET 的虚拟用户的身份来访问、操作数据库的,你可以在“控制面板”-“管理工具”-“计算机管理”-“本地用户和组”-“用户”中看到这个用户,默认情况下是:????

???? 全名:ASP.NET 计算机帐户????

???? 描述为:用于运行 ASP.NET 辅助进程(aspnet_wp.exe)的帐户。????

???? 隶属于:Users组。????

??使用这么一个隶属于 Users 组的用户来进行文件操作、数据库操作的风险是要比用一个 Administrators 组的用户的风险要小得多,这也是 ASP.NET 在安全方面的一个考虑吧。????

??既然是这么一个用户需要访问、操作数据库文件本身,那么我们就需要给它一定的 NTFS 权限以允许它的访问。显然没有 NTFS 的权限许可,ASPNET 就无法访问、操作数据库,就会出现上面实验中所看到的那些错误了。????

(2) 经过上面的实验,我们已经知道如下的 NTFS 权限设置是可以满足一般需求的:????

a) D:/wwwroot/test/data/ 文件夹给用户ASPNET以如下权限:????

??????????????????????允许??拒绝????

???? 完全控制??????????□????□????

???? 修改??????????????□????□????

???? 读取及运行????????√????□????

???? 列出文件夹目录????√????□????

???? 读取??????????????√????□????

???? 写入??????????????√????□????

??b) D:/wwwroot/test/data/db1.mdb 文件本身给用户ASPNET以如下权限:????

???? √ 允许将来自父系的可继承权限传播给该对象????

同时我们也注意到 db1.mdb 是否为“只读”文件对 ASPNET 的访问也会有一定影响。????

(3) 上述权限设置可以直接设置给 ASPNET 用户自己,也可以设置给 Users 组,或者直接给 Everyone 组上述权限都是可以的。因为 ASPNET 隶属于 Users 组,可以通过 用户组 给 ASPNET 设置权限。????

(4) NTFS 权限在文件或文件夹右击后得到的“属性”对话框-“安全”选项卡中设置,一般情况下,可以考虑给 Adminitrators 组以“完全控制”的权限,同时不要轻易在“拒绝”中打勾,有关 NTFS 权限设置的技巧,可以咨询网络管理员、网络安全专家的建议。????

注:FAT, FAT32 格式的分区中不支持 NTFS 权限。????

(5) Windows 2000 系列,Windows Server 系列的“安全”选项卡默认是很容易找到的,但 Windows XP Professional 中的“安全”选项卡默认是关闭的,可以将“控制面板”-“文件夹选项”-“查看”选项卡中的“高级设置”中“使用简单共享(推荐)”一项的“√”去除,“确定”之后,再次按照上面的方法即可看到“安全”选项卡了。????

===========??

?? 综上所述,2、3、4法一起使用,是防止数据库被下载最基本,最行之有效的方法,既适用于对服务器有管辖权的网管,又适用于虚拟主机的用户,推荐每一个制作者同时必用这三种方法??

?? 若你对服务器拥有管辖权,推荐再加上方法9,你的ACCESS数据库的安全性就可以大大提高了。

10.(四)ACCESS数据库的结构 篇十

查询

名: 学

号: 班

级: 指导教师:

****年**月**日1 实验目的

掌握选择查询、参数查询、交叉表查询、操作查询、SQL查询的创建。实验总体要求

根据题目选择合适的方法创建查询,可以使用查询向导、查询设计视图和SQL命令。实验步骤可以粘贴查询设计视图截图,也可粘贴SQL命令。实验内容

1、创建查询CX1,查找有超期图书的读者的借书证号、姓名、图书编号、图书名称,借阅日期,超期天数(以当前时间为准,借书时间超过90天为超期)。

2、创建查询CX2,统计每个出版社出版的图书的数量、图书的平均定价。

3、创建查询CX3,查找定价低于图书平均定价的图书的图书编号、图书名称、作者、出版社、定价。

4、创建更新查询CX4,将“图书书目表”的“是否借出”字段根据“借阅登记表”中读者的借阅情况填入正确的值。

5、创建生成表查询CX5,查找从未有读者借阅的图书的图书编号、图书名称、作者、出版社,生成的表名为“未借出过图书”。

6、为“借书证表”增加一字段,字段名为性别、文本型、字段大小为1。创建查询CX6,根据身份证号的第17位输入性别字段的值。(第17位偶数是女,奇数为男)

7、创建交叉表查询CX7,根据输入的出版社参数值,显示该出版社每种类别的图书的数量。(出版社为行标题,类别号为列标题)

8、创建查询CX8,查找借出次数最多的图书的编号、图书名称、作者、出版社。

9、创建查询CX9,将借出次数最多的图书的编号、图书名称、作者、出版社追加到“未借出过图书”表中。实验步骤

1、CX1的SQL命令为:

SELECT 借书证表.借书证号, 借书证表.姓名, 图书书目表.图书编号, 图书书目表.图书名称, 借阅登记表.借阅日期, Date()-[借阅日期] AS 超期天数

FROM 图书书目表 INNER JOIN(借书证表 INNER JOIN 借阅登记表 ON 借书证表.借书证号 = 借阅登记表.借书证号)ON 图书书目表.图书编号 = 借阅登记表.图书编号

WHERE(((Date()-[借阅日期])>90)AND((借阅登记表.归还日期)Is Null));

CX1的查询结果为:

2、CX2的设计视图为:

CX2的查询结果为: SQL:SELECT 图书书目表.出版社,count(图书书目表.出版社)as 数量,avg(图书书目表.定价)as平均定………………………….roup by 图书书目表.出版社;

3、CX3的SQL命令为:

CX3的查询结果为:

4、CX4的SQL命令为:

UPDATE 图书书目表 SET 是否借出 = 1 WHERE………………………….图书书目表.图书编号=借阅登记表.图书编号 and 借阅登记表.归还日期 is null);CX4的查询结果为:

5、CX5的SQL命令为:

SELECT 图书编号, 图书名称, 作者, 出版社 INTO 未借出过图书

………………………….from 借阅登记表 where 图书书目表.图书编号=借阅登记表.图书编号);CX5的查询结果为:

6、CX6的SQL命令为:

UPDATE 借书证表 SET 性别 = Mid(身份证号,17,1);CX6的查询结果为:

7、CX7的SQL命令为:

TRANSFORM Count(图书书目表.图书编号)AS 图书编号之计数 SELECT ………………………….目表.图书编号)AS [总计 图书编号] FROM 图书书目表

GROUP BY 图书书目表.出版社

PIVOT 图书书目表.类别号;CX7的查询结果为:

8、CX8的SQL命令为:

SELECT 图书编号, 图书名称, 作者, 出版社 FROM 图书书目表 WHERE 图书编号=(SELECT TOP 1 图书编号

………………………….ORDER BY Count(图书编号)DESC);CX8的查询结果为:

9、CX9的SQL命令为:

INSERT INTO 未借出过图书(图书编号, 图书名称, 作者, 出版社)SELECT 图书编号, 图书名称, 作者, 出版社 ………………………….SELECT TOP 1 图书编号 FROM 借阅登记表

GROUP BY 借阅登记表.图书编号 ORDER BY Count(图书编号)DESC 5);CX9的查询结果为:

上一篇:Python中利用sorted函数排序的简单教程下一篇:社区突发性地质灾害应急预案