zoukankan      html  css  js  c++  java
  • VB中用ADO对象动态建立新的数据库和表

      前面讲到的方法有一定的局限性,它不能让用户产生自己所需的数据库文件,即使能产生数据表也只能在原有表的基础上生成。我们现在的目的就是让用户利用ADO对象在程序运行过程中创建数据库和表,就好象他利用Access来建立数据库和表一样。为此,我们应该引用对象库"Microsoft ActiveX Data Objects 2.5 Library"和"Microsoft ADO Ext 2.1. For DDL Security"
     
       我们不妨用一个实例来说明具体的操作过程和方法。我们的实例要达到目的是:在程序运行过程中建立一个数据库,数据库的名称由用户输入。然后在数据库中建立一个名为"MyTable"的数据表,数据表中有三个字段,它们分别是:"编号"(整数型)、 "姓名"(字符型,宽度为8)、"住址" (字符型,宽度为50),接着在数据表中添加一条记录,最后在DataGrid控件中把记录的内容显示出来,并且让用户在DataGrid控件中任意修改、添加记录。
     
       首先在VB中新建一个窗体,然后在"工程"菜单中引用对象库"Microsoft ActiveX Data Objects 2.5 Library"和"Microsoft ADO Ext 2.1. For DDL Security"。接着定义三个窗体级的对象变量和一个窗体级的字符串变量,它们的具体定义是:
     
       Dim cat As New ADOX.Catalog '不用cat用另外一个名字也可以
     
       Dim conn As New ADODB.Connection
     
       Dim rs As New ADODB.Recordset
     
       Dim pstr As String '定义该变量是为了后面的书写方便
     
       为了更灵活地创建数据库,我们可以在窗体中加入一个通用对话框、一个DataGrid控件,三个命令按钮,它们的标题分别是:创建数据库和表、查看、更新。通用对话框的作用是给用户输入数据库文件名和决定数据库的存放位置。 "创建数据库和表"命令按钮对应的代码是北美托福答案
     
       Private Sub Command1_Click()
     
       Dim fm As String 'fm变量用来获取用户输入的文件名
     
       CommonDialog1.Filter = "MDB文件(*.mdb)|*.mdb|AllFiles(*.*)|*.*|"
     
       CommonDialog1.FilterIndex = 1
     
       CommonDialog1.InitDir = "D:\Jthpaper"
     
       CommonDialog1.Flags = 6
     
       CommonDialog1.Action = 2
     
       If CommonDialog1.FileName = "" Then
     
       MsgBox "你必须输入一个文件名,请重新保存一次!"
     
       Exit Sub
     
       Else
     
       fm = CommonDialog1.FileName
     
       End If
     
       pstr = "Provider=Microsoft.Jet.OLEDB.4.0;" '不能把这里的4.0改为3.51
     
       pstr = pstr & "Data Source=" & fm
     
       cat.Create pstr '创建数据库
     
       Dim tbl As New Table
     
       cat.ActiveConnection = pstr
     
       tbl.Name = "MyTable" '表的名称
     
       tbl.Columns.Append "编号", adInteger '表的第一个字段
     
       tbl.Columns.Append "姓名", adVarWChar, 8 '表的第二个字段
     
       tbl.Columns.Append "住址", adVarWChar, 50 '表的第三个字段
     
       cat.Tables.Append tbl '建立数据表
     
       conn.Open pstr
     
       rs.CursorLocation = adUseClient
     
       rs.Open "MyTable", conn, adOpenKeyset, adLockPessimistic
     
       rs.AddNew '往表中添加新记录
     
       rs.Fields(0).Value = 9801
     
       rs.Fields(1).Value = "孙悟空"
     
       rs.Fields(2).Value = "广州市花果山"
     
       rs.Update
     
       End Sub
     
       上面程序中有一个需要说明的地方,这就是语句:pstr = "Provider=Microsoft.Jet.OLEDB.4.0;",这个语句表示Microsoft Jet OLEDB驱动程序的版本是4.0,这是目前最新的版本,利用它你可以用VB中的ADO对象访问Access2000及其以下版本所建立的数据库。你不能把这里的"4.0"改为"3.51",否则程序不能正常运行;在VB6中,3.51版本的Microsoft Jet OLEDB驱动程序对应的是Access97数据库。换而言之,用这种方法建立的数据库和表跟用Access2000所建立的数据库和表是同一类型的,你只能直接用Access2000来打开,虽然你可以用VB6来访问这种数据库和其中的数据表,但你不能用Access97或VB6中的"可视化数据管理器"来直接打开雅思答案
     
       在程序运行时只要用户单击该命令按钮就可以创建自己所需的数据库。"查看"命令按钮对应的代码是:
     
       Private Sub Command3_Click()
     
       Set DataGrid1.DataSource = rs
     
       End Sub
     
       "更新"命令按钮对应的代码是:
     
       Private Sub Command4_Click()
     
       rs.UpdateBatch
     
       End Sub
     
       我们这个实例只是用来说明问题,在实际应用当中你可以把它进一步改进,例如:你在窗体中再增加一些文本框和组合框,供用户输入或选择数据表的名称、字段的名称、字段的宽度和小数位数。这样,用户就可以自主地决定数据库的所有内容了,程序的灵活性也就大大提高了托福答案
     
       5: 结束语
     
       如果你使用的是最新的数据访问接口技术ADO(Microsoft强烈建议大家使用这种最新技术),你又想在程序运行过程中创建数据库文件和数据表,此时,你应该在Visual Basic 6.0中引用对象库"Microsoft ActiveX Data Objects 2.5 Library"和"Microsoft ADO Ext 2.1. For DDL Security",然后使用ADOX对象的Create、Append等方法就可以实现。 这种方法使用的Microsoft Jet OLEDB驱动程序的版本是4.0,因此,使用这种方法建立的数据库文件和数据表可以直接使用Access2000打开。笔者在VB数据库软件开发过程中已多次使用这种方法,该方法在提高程序的灵活性和满足用户的特殊需要方面有很大的作用。
     

  • 相关阅读:
    spring mvc给参数起别名
    聊聊分布式定时任务中间件架构及其实现--转
    Batch Normalization的算法本质是在网络每一层的输入前增加一层BN层(也即归一化层),对数据进行归一化处理,然后再进入网络下一层,但是BN并不是简单的对数据进行求归一化,而是引入了两个参数λ和β去进行数据重构
    终端安全工具 gartner 排名
    When Cyber Security Meets Machine Learning 机器学习 安全分析 对于安全领域的总结很有用 看未来演进方向
    DNS隧道之DNS2TCP实现——dns2tcpc必须带server IP才可以,此外ssh可以穿过墙的,设置代理上网
    DNS隧道之DNS2TCP使用心得教程——是可以用来穿透qiang的,ubuntu下直接apt install dns2tcp
    DNS隧道工具汇总——补充,还有IP over DNS的工具NSTX、Iodine、DNSCat
    Data Mining and Machine Learning in Cybersecurity PDF
    ES failed to notify ClusterStateListener java.lang.IllegalStateException: environment is not locked
  • 原文地址:https://www.cnblogs.com/haosola/p/3017421.html
Copyright © 2011-2022 走看看