举个例子,如下图
左边是access数据库,右边是用vb写的数据库应用程序,都是高中阶段学过的。现在我们用“ado.exe”读取“订单1.mdb”中的产品表,运行结果如图
看起来好像数据库应用程序能直接操作数据库,其实不是,看vb代码:
Private Sub Command1_Click()
Dim a(1 To 100) As String '依次存储产品名称
Dim b(1 To 100) As Double '依次存储单价
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset '定义记录集rs
conn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;DATA Source=" & App.Path & "\订单1.mdb" '连接“订单1.mdb”数据库文件
conn.Open
Text1.Text = (App.Path)
Set rs.ActiveConnection = conn
rs.Open "SELECT * From 产品 " ' 打开“产品”数据表后,rs指针指向第1条记录"
i = 0
List1.AddItem "产品名称 单价"
Do While Not rs.EOF ' 到记录集rs的最后一条记录后退出循环
i = i + 1
a(i) = rs.Fields("产品名称") '读取当前记录“产品名称”字段值
b(i) = rs.Fields("单价") '读取当前记录“单价”字段值
List1.AddItem a(i) & " " & b(i)
rs.MoveNext '移动到下一条记录
Loop
End Sub
其中有一句代码是
rs.Open "SELECT * From 产品 "
rs.open是数据库应用程序执行的,但SELECT * From 产品 是数据库管理系统执行的,意思是从产品表中获取所有记录,不信,咱们打开access,来执行一下。
左边是产品表,右边是查询的sql视图,我们来执行一下查询
查询结果跟产品表一模一样,所以没有数据库管理系统的支持,SELECT * From 产品 就不会被执行。
所以数据库应用程序不能脱离数据库管理系统独立运行。