ADO 操作 Access 数据库的方式还挺实用的,尤其在维护老项目或者搞点轻量级的数据应用时,出手快、见效也快。
ADO 的对象模型蛮直观,Connection用来连数据库,Command跑 SQL 语句,Recordset负责拿数据,这仨基本就能干大部分活了。再加上Parameter,搞点参数化查询也挺方便。
比如你要连个 Access 数据库,只要一串连接字符串丢给Connection
就行,像这样:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyDatabase.mdb
。Open
一下,搞定。
写查询也不复杂,Command 对象配个CommandText
,加点参数就能跑。你要查Customers
表里的数据,只要:
cmd.CommandText = "SELECT * FROM Customers"
Set rs = cmd.Execute
返回来的Recordset
就是你要的数据,可以一行一行读,也能直接绑定到控件上,响应还挺快。
参数化查询也支持,防 SQL 注入也靠谱。你可以这样写:
cmd.CommandText = "SELECT * FROM Customers WHERE Name = @Name"
cmd.Parameters.Append cmd.CreateParameter("@Name", adVarChar, adParamInput, 50, "John")
你要是搞插入、更新甚至事务也没问题,用cmd.Execute
跑就行。比如插入:
cmd.CommandText = "INSERT INTO Customers (Name, Address) VALUES (?, ?)"
cmd.Parameters.Append cmd.CreateParameter("@Name", adVarChar, adParamInput, 50)
cmd.Parameters.Append cmd.CreateParameter("@Address", adVarChar, adParamInput, 100)
cmd.Parameters("@Name").Value = "New Customer"
cmd.Parameters("@Address").Value = "123 Main St"
cmd.Execute
不过哦,记得加上错误。VB 里用On Error
,.NET 里用Try...Catch
,别等崩了才发现出事了。
如果你现在还在和 Access 打交道,或者项目里用 VBA、VB6、甚至老 C++,那用 ADO 来连数据库,真的还蛮合适的。