第71集 数据库的基本操作
347、 基本概念
1、 怎么样才能操作数据库?
使用ADO建立和数据库的连接,然后用ADO对象和sql语言对数据库进行操作。
2、 SQL是什么?
SQL(Structured Query Language)是一种查询语言,可以查询、更新数据库中的数据。
3、 SQL可以查询哪些数据库?
SQL是一种通用的查询语言,可以查询EXCEL,ACCESS,SQL SERVER等各种数据库
4、 ADO是什么?
ADO是新的数据库存取技术,可以建立与各数据库库的连接,也可以对数据库数据进行添加、更新、删除等操作
5、 我们学习SQL+ADO访问数据库有什么用处?
1 可以在不打开EXCEL文件的情况下,从文件中提取数据.
2 可以从建立连接的专业软件数据库中提取数据.如财务软件等.
6、 怎么使用ADO?
引用法
工具–引用—Microsoft Activex…Data Object 2.X Library"
引用后再声明: Dim conn As New Connection 声明链接对象
Dim rst As New Recordset 声明记录集对象
创建法
使用CreateObject函数创建
Set conn = CreateObject(“adodb.connection”) '创建ado对象
Set rst = CreateObject(“ADODB.recordset”) '创建记录集
348、 ADO的基本对象
1、 Connection对象
- 建立和数据库的连接
.Open
Dim conn As New Connection
conn.Open “provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=” & ThisWorkbook.path & “/Database/exceldata.xls”
conn.Open: 打开数据库的连接
provider=microsoft.jet.oledb.4.0 数据库引擎版本,经测试,此句在2010版本不能用,需改为:Microsoft.ACE.OLEDB.12.0,后续代码都需要修改
extended properties=excel 8.0 连接的是Excel8.0版本(excel2000以后的版本),Excel不是标准的数据库格式,所以要设置扩展属性
data source=" & ThisWorkbook.Path & “/数据库.xls” 数据库路径
以下是连接其他数据库或文件的字符串表达式:
Mysql数据库
strDriver = “Provider=SQLOLEDB;DataSource=” & path & “;Initial Catolog=” & strDataName
TXT文件
strDriver = “Provider= Microsoft.ACE.OLEDB.12.0;Extended Properties=‘text;IMEX=1;HDR=NO;FMT=Delimited;’;Data Source=” & path
MSSQL数据库
strDriver = “Provider=MSDASQL;Driver={SQL Server};Server=” & path & “;Database=” & strDataName
Oracle数据库
strDriver = “Provider=madaora;Data Source=MyOracleDB; User Id=UserID; Password=Password”
- 执行sql语句
.Execute sql
增加新表格:.Execute “Create 表格名 字段和属性”
增加新记录:.Execute “Insert into 表名 (字段1, 字段2,… 字段n) VALUES(值1,值2,… 值n)”
删除记录: .Execute "Delete from 表名 where 条件
修改旧记录:.Execute "Update 表名称 SET 列1 = 新值,列2=新值 WHERE 列名称 = 某值
筛选记录: .Execute "Select 字段 from 表 where 条件
2、 Recordset对象
作用 打开记录集操作记录
-
打开游标 (记录集)
rst.Open sql或command语句等,已打开的conn链接, -
添加新记录
AddNew 单个字段或数组, 单个值或数组或
rst.AddNew '添加新的记录
rst.Fields(“姓名”) = “伍天明” 'Fields(“字段名”)表示某列的记录
rst.Fields(“年龄”) = 28
rst.Fields(“性别”) = “男”
rst.Update '添加记录后要更新 -
修改记录
rst.Update 字段数组, 值或数组 -
删除记录
rst.Delete -
在记录中循环
BOF 在记录的最前面
EOF 在记录的结尾
GetRows(默认值-1,Start, 字段)'Start 0从当前记录开始,1从第一条记录,2从最后一条记录开始
349、 记录添加
- 使用.Execute 执行 Insert 语句
Sub 添加1()
Dim conn As New Connection
Dim sql As String
Dim data As New 数据库
conn.Open data.Excel数据库
sql = “Insert into [Sheet1$] (姓名, 年龄, 性别) VALUES(‘张雨生’, 35, ‘男’)”
conn.Execute sql
conn.Close
Set conn = Nothing
End Sub - 使用AddNew方法添加记录
Sub 添加()
Dim conn As New Connection
Dim rst As New Recordset
'Set conn = CreateObject(“adodb.connection”) '创建ado对象
'Set rst = CreateObject(“ADODB.recordset”) '创建记录集
Dim data As New 数据库
conn.Open data.Excel数据库
rst.Open “select * from [Sheet1$]”, conn, adOpenForwardOnly, adLockOptimistic
rst.AddNew Array(“姓名”, “年龄”, “性别”), Array(“李楠”, 25, “男”)
'rst.AddNew '添加新的记录
’ rst.Fields(“姓名”) = “伍天明w” 'Fields(“字段名”)表示某列的记录
’ rst.Fields(“年龄”) = 28
’ rst.Fields(“性别”) = “男”
'rst.Update '添加记录后要更新
rst.Close '关闭记录集
conn.Close '关闭与数据库的链接
Set rst = Nothing '释放对象
Set conn = Nothing '释放对象
MsgBox “已输入到数据库”
End Sub - 添加到access
Sub 添加到access()
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim sq1 As String
Dim data As New 数据库
cnn.Open data.Access数据库
'链接方法同excel数据链接
sq1 = “Select * from 员工” '从员工表中查询
rst.Open sq1, cnn, adOpenKeyset, adLockOptimistic
rst.AddNew
rst.Fields(“姓名”) = “李楠”
rst.Fields(“年龄”) = 23
rst.Fields(“性别”) = “女”
rst.Update
cnn.Close
Set cnn = Nothing
MsgBox “添加成功”
End Sub
350、 记录删除
SQL语句中delete语句可以删除符合条件的记录
Delete * from 数库表 where 条件
'注:Delete语句不支持Excel数据库删除操作,所以要想删除Excel中的数据,只能用其他方法,如打开后删除.
Sub ADO删除方法()
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim