vba基本操作 -- MS SQL Server操作

  • 读取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

 

 ABCD
1job_idjob_descmin_lvlmax_lvl
230'test30'20100
331'test31'20100
432'test32'20100
533'test33'20100
634'test34'20100

 

 

 

 

 

转载于:https://www.cnblogs.com/nikeylee/archive/2012/07/12/2588890.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值