VBA SQLServer 基本操作


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

 

 

 

 

 

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM