付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、毕业设计(论文)VB创建ACCESS数据库全解本文由achm207贡献VB创建ACCESS数据库全解动态创建数据库、创建表,创建记录ADOADOX2010-01-2213:28摘要:本文阐述了在VB程序中利用ADO对象动态创建数据库和数据表的方法,这些方法在开发VB数据库应用程序中很有实用价值, 它可以提高数据库程序灵活性。关键词:数据库、数据表、ADQADOX1:问题的提出在VisualBasic中,常用的数据访问接口有下列三种:数 据 库 访 问 对 象(DAODataAccessObject)、 远 程 数 据 库 对 象(RDQRemoteDataObject)和ActiveX数据对象
2、(ADQActiveXDataObject)。数据库访问技术一直在不断进步,而这三种接口的每一种都分别代表了该技术的不同发展阶段。最新的是ADQ它是比RDO和DAO更加简单,然而更加灵活的对象模型。正因如此, 越来越多的人在用VB开发数据库软件时使用ADO作为数据访问接口。在开发过程中,我们通常的使用的方法是:先使用数据库管理系统(例如:MicrosoftAccess)或VB中的可视化数据管理器建立好数据库和数据表结构,然后在程序中通过使用ADODC数据库控件或引用ADO对象与数据库中的表建立连接,再通过数据库感知控件(例如:文本框、DataGrid等)来进行数据库的各种操作。在这种开发过程中
3、,我们有时需要面对这样一个问题:如何让用户在程序运行过程中动态地建立自己所需的数据库和数据表以提高程序的灵活性呢?在程序运行过程中建立自己所需的数据库和数据表,其本质就是用代码(或者说通过编程)来建立数据库和数据表。众所周知,在Foxpro或ASP编程中,这是很容易的一件事件。那么在VB数据库编程中又是怎样来操作的呢?在VB数据库编程中,如果使用DAO作为数据库访问接口技术,则可以用CreateDatabase结合CreateTableDef方法来实现, 目前已有不少书和杂志都讲到了这种方法,本文就不再讲述了;但你如果使用的是最新的数据库访问接口技术ADO,你却发现目前的书和杂志上没有文章讲到
4、如何用代码来建立数据库和数据表的方法,可有时我们非常需要用到这种方法,下面我们就来解决这个问题。2: ADO与ADOX我们先来对ADO和ADOX进行简单的认识。在VB6中,使用ADO开发数据库应用程序时,我们要引用对象库MicrosoftActiveXDataObjects2.5Library的简称就是ADQ它是VB6数据库最核心的对象群,也是VB数据库开发人员经常所引用的对象库,在VB6中你可以看到它的各种版本,从2.0版到2.6版都有,很多人对它已经很熟悉,在这个东西此我们不再详细介绍。如果要在程序运行过程中创建数据库和表,我们还要引用对象库MicrosoftADOExt2.1.ForDD
5、LSecurity,简称为ADOX具库文件名为是:Msadox.dll。ADOX是对ADO对象和编程模型的扩展,它将ADO扩展为包括创建、修改和删除模式对象,如表格和过程。它还包括安全对象,用于维护用户和组,以及授予和撤消对象的权限。ADOX的对象如下表所示:对象说明Catalog包含描述数据源模式目录的集合。Column表示表、索引或关键字的列。Group表示在安全数据库内有访问权限的组帐号。Index表示数据库表中的索引。Key表示数据库表中的主关键字、外部关键字或唯一关键字。Procedure表示存储的过程。Table表示数据库表,包括列、索引和关键字。User表示在安全数据库内具有访问
6、权限的用户帐号。View表示记录或虚拟表的过滤集。ADOX常用方法有:Append(包括Columns、GroupsIndexes、Keys、ProceduresTables、Users、Views)、Create(创建新的目录)、Delete(删除集合中的对象)、Refresh(更新集合中的对象)等等。有关ADOX的详细信息,请在/data/ado中参阅Microsoft发布的有关ADOX说明的Web页。3:在原有数据表的基础上产生新的数据表如果仅仅是在已有的数据表的基础上产生新的数据表,我们只要引用对象库MicrosoftActiveXDataObjects2.5Library再利用Sel
7、ectInto语句就可以了。例如:有一个名为Wage.mdb的数据库,数据库中有一个名为工资表数据表,该数据表的字段有:编号、姓名、基本工资、津贴、应发工资、扣款、实发工资等,这个表中已经有很多的记录。现在我们把其中的实发工资大于2019的记录筛选出来组成一个新表, 新表的名称由用户从文本框中输入,新表中我们只要三个字段,它们是:编号、姓名、实发工资。我们用下列程序就可以实现:(事先在窗体中添加一个文本框Textl和一个命令按钮Commandl)DimconnAsNewADODBConnectionDimrsAsNewADODB.RecordsetDimcommandAsNewADODB.co
8、mmandPrivateSubCommand1_Click()DimbmAsStringDimsqlAsStringIfText1.TextThenbm=Trim(Text1.Text)sql=Select编号,姓名,实发工资Into+bm+From工资表Where实发工资2019SetcommandActiveConnection=conncommand.CommandText=sqlcommand.ExecuteElseMsgBox你必须输入一个名字EndIfPrivateSubForm_Load()DimstrAsStringstr=App.PathIfRight(str,1)Thens
9、tr=str+EndIfpstr=Provider=Microsoft.Jet.OLEDB.3.51;pstr=pstrPersistSecurityInfo=False;pstr=pstrDataSource=strwage.mdbconn.Openpstrrs.CursorLocation=adUseClientrs.Open工资表,conn,adOpenKeyset,adLockPessimisticSetDataGrid1.DataSource=rsEndSub当然, 我们还可以把程序设计得更好,比如:让用户先在窗口中任意选择所需的字段和一些条件,然后再组合生成一个新表。但无论如何,这
10、种操作只能在从原表的基础上产生一个新表,不能产生一个数据库文件,并且新表和原表放在同一个数据库中。4:建立新的数据库和表前面讲到的方法有一定的局限性,它不能让用户产生自己所需的数据库文件,即使能产生数据表也只能在原有表的基础上生成。我们现在的目的就是让用户利用ADO对象在程序运行过程中创建数据库和表,就好象他利用Access来建立数据库和表一样。为此,我们应该引用对象库MicrosoftActiveXDataObjects2.5Library和MicrosoftADCExt2.1.ForDDLSecurity我们不妨用一个实例来说明具体的操作过程和方法。我们的实例要达到目的是:在程序运行过程中
11、建立一个数据库,数据库的名称由用户输入。然后在数据库中建立一个名为MyTable的数据表,数据表中有三个字段,它们分别是:编号(整数型)、姓名(字符型,宽度为8)、住址(字符型,宽度为50) ,接着在数据表中添加一条记录, 最后在DataGrid控件中把记录的内容显示出来,并且让用户在DataGrid控件中任意修改、添加记录。首先在VB中新建一个窗体,然后在工程菜单中引用对象库MicrosoftActiveXDataObjects2.5Library和MicrosoftADOExt2.1.ForDDLSecurity。接着定义三个窗体级的对象变量和一个窗体级的字符串变量,它们的具体定义是:Di
12、mcatAsNewADOX.Catalog不用cat用另外一个名字也可以DimconnAsNewADODBConnectionDimrsAsNewADODB.RecordsetDimpstrAsString定义该变量是为了后面的书写方便为了更灵活地创建数据库,我们可以在窗体中加入一个通用对话框、一个DataGrid控件,三个命令按钮,它们的标题分别是:创建数据库和表、查看、更新。通用对话框的作用是给用户输入数据库文件名和决定数据库的存放位置。创建数据库和表命令按钮对应的代码是:PrivateSubCommand1_Click()DimfmAsStringfm变量用来获取用户输入的文件名Comm
13、onDialog1.Filter=MDB文件(*.mdb)|*.mdb|AllFiles(*.*)|*.*|CommonDialogl.FilterIndex=1CommonDialogl.InitDir=D:JthpaperCommonDialogl.Flags=6CommonDialogl.Action=2IfCommonDialogl.FileName=ThenMsgBox你必须输入一个文件名,请重新保存一次!ExitSubElsefm=CommonDialogl.FileNameEndIfpstr=Provider=Microsoft.Jet.OLEDB.4.0;不能把这里的4.0改为
14、3.51pstr=pstrDataSource=fmcat.CreateActiveConnection=pstrtbl.Name=MyTable表的名称tbl.Columns.Append编号,adInteger表的第一个字段tbl.Columns.Append姓名,adVarWChar,8表的第二个字段tbl.Columns.Append住址,adVarWChar,50表的第三个字段cat.Tables.Appendtbl建立数据表conn.Openpstrrs.CursorLocation=adUseClientrs.OpenMyTable,conn,adOpenKeyset,adLoc
15、kPessimisticrs.AddNew往表中添加新记录rs.Fields(0).Value=9801rs.Fields(1).Value=孙悟空rs.Fields(2).Value=广州市花果山rs.UpdateEndSub上面程序中有一个需要说明的地方,这就是语句:pstr=Provider=Microsoft.Jet.OLEDB.4.0;,这个语句表示MicrosoftJetOLEDB驱动程序的版本是4.0,这是目前最新的版本,利用它你可以用VB中的ADO对象访问Access2019及其以下版本所建立的数据库。你不能把这里的4.0改为3.51,否则程序不能正常运行;在VB6中,3.51
16、版本的MicrosoftJetOLEDB驱动程序对应的是Access97数据库。pstr创建数据库DimtblAsNewTablecat.换而言之,用这种方法建立的数据库和表跟用Access2019所建立的数据库和表是同一类型的,你只能直接用Access2019来打开,虽然你可以用VB6来访问这种数据库和其中的数据表,但你不能用Access97或VB6中的可视化数据管理器来直接打开。在程序运行时只要用户单击该命令按钮就可以创建自己所需的数据库。查看命令按钮对应的代码是:PrivateSubCommand3_Click()SetDataGridl.DataSource=rsEndSub更新命令按钮对应的代码是:PrivateSubCommand4_Click()rs.UpdateBatchEndSub我们这个实例只是用来说明问题,在实际应用当中你可以把它进一步改进,例如:你在窗体中再增加一些文本框和组合框,供用户输入或选择数据表的名称、字段的名称、字段的宽度和小数位数。这样,用户就可以自主地决定数据库的所有内容了,程序的灵活性也就大大提高了。5:结束语如果你使用的是最新的数据访问接口技术ADO(Microsoft强烈建议大家使用这种最新技术),你又想在程序运行过程中创建数据库文件和数据表
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025 高中信息技术数据与计算之数据在移动支付市场竞争分析中的应用课件
- 2026年及未来5年市场数据中国迪吧行业市场深度评估及投资策略咨询报告
- 家庭春季传染病预防课件
- 现代农业机械维护与保养技术指南
- 2025 高中信息技术数据与计算之数据仓库的维度建模的场景建模课件
- 2026年浪潮海岳大模型盐化工智控年增综合效益近亿案例解析
- 2026年长三角智能经济先行区技术 产业 场景 治理全链条生态
- 2026年智算中心建设与大模型训练集群规划方案
- 2026年高蛋白午餐肉老年人零食配方减盐减脂质构优化
- 2026年联发科天玑旗舰芯片手机端AI算力提升路径
- 自卑与超越课件
- 2025年焊工证考试题库(含答案)
- 新能源汽车维修技能实操考核题
- 2025新版护理文书书写规范
- 2025年苏州卫生职业技术学院单招《语文》题库试题及参考答案详解(黄金题型)
- 急诊护理交接班制度
- 2025年蜂巢能源测评题目及答案
- 水利水电工程设计信息模型分类和编码标准
- 2024-2025学年度辽宁农业职业技术学院单招《语文》试卷(名师系列)附答案详解
- 附件2-光明新区锂电池企业安全检查表
- 2025年山东铁投集团公开招聘(33人)笔试参考题库附答案解析
评论
0/150
提交评论