- 读取MS SQL Server数据表数据,并将它保存到excel工作表中
Sub ReturnSQLrecord()
'sht 为excel工作表对象变量,指向某一工作表
Dim i As Integer, sht As Worksheet
'定义数据链接对象 ,保存连接数据库信息
'使用ADODB,须在菜单的Tools->References中添加引用“Microsoft ActiveX Data Objects library 2.x”
Dim cn As New ADODB.Connection
'定义记录集对象,保存数据表
Dim rs As New ADODB.Recordset
Dim strCn As String, strSQL As String
'定义数据库链接字符串,Server=服务器名称或IP地址(本地可填写“.”);Database=数据库名称;Uid=用户登录名;Pwd=密码
strCn = "Provider=sqloledb;Server=NIKEY-980114BB0;Database=pubs;Uid=sa;Pwd=sa;"
'定义SQL查询命令字符串
strSQL = "select job_id, job_desc from dbo.jobs"
'与数据库建立连接,如果成功,返回连接对象cn
cn.Open strCn
'执行strSQL所含的SQL命令,结果保存在rs记录集对象中
rs.Open strSQL, cn
i = 1
'把sht指向当前工作簿的sheet1工作表
Set sht = ThisWorkbook.Worksheets("sheet1")
'当数据指针未移到记录集末尾时,循环下列操作
Do While Not rs.EOF
'把当前记录的job_id字段的值保存到sheet1工作表的第i行第1列
sht.Cells(i, 1) = rs("job_id")
sht.Cells(i, 2) = rs("job_desc")
'把指针移向下一条记录
rs.MoveNext
i = i + 1
Loop
'关闭记录集
rs.Close
'关闭数据库链接,释放资源
cn.Close
End Sub
- 读取excel工作表数据,并将之插入到数据库中(将sheet1工作表中的A2:D6的记录插入到数据库pubs的jobs数据表中)
Sub ReturnSQLrecord()
Dim i As Integer, sht As Worksheet
'定义数据链接对象 ,保存连接数据库信息
'使用ADODB,须在菜单的Tools->References中添加引用“Microsoft ActiveX Data Objects library 2.x”
Dim cn As New ADODB.Connection
Dim strCn As String, strSQL As String
'定义数据库链接字符串,Server=服务器名称或IP地址(本地可填写“.”);Database=数据库名称;Uid=用户登录名;Pwd=密码
strCn = "Provider=sqloledb;Server=.;Database=pubs;Uid=sa;Pwd=sa;"
'清空定义的变量
strSQL = ""
'与数据库建立连接,如果成功,返回连接对象cn
cn.Open strCn
Set sht = ThisWorkbook.Worksheets("sheet1")
For i = 2 To 6
'构造SQL命令串,对标识列job_id执行插入操作时,要设置表的IDENTITY_INSERT为打开,否则会插入失败
strSQL = strSQL & "SET IDENTITY_INSERT dbo.jobs ON;insert into dbo.jobs(job_id,job_desc,min_lvl,max_lvl) values(" _
& sht.Cells(i, 1) & "," & CStr(sht.Cells(i, 2)) & "," & sht.Cells(i, 3) & "," & sht.Cells(i, 4) & ") ;"
Next
'执行该SQL命令串,如果SQL命令没有错误,将在数据库中添加5个记录;也可以用rs.open strSQL,cn 执行
cn.Execute strSQL
'关闭数据库链接,释放资源
cn.Close
End Sub
| |
A |
B |
C |
D |
| 1 |
job_id |
job_desc |
min_lvl |
max_lvl |
| 2 |
30 |
'test30' |
20 |
100 |
| 3 |
31 |
'test31' |
20 |
100 |
| 4 |
32 |
'test32' |
20 |
100 |
| 5 |
33 |
'test33' |
20 |
100 |
| 6 |
34 |
'test34' |
20 |
100 |