完成vb下將excel的表導入sql
忙了兩天,找書,上網,查了一些資料總算吧這個問題解決了。對於像編程開發一類的工作,有時看書沒太大的幫助,以爲實踐性比較強,還真的不如上網baidu或google一下來的快。前兩天找的那篇文章其實沒有利用上,倒是連到CSDN上的一個帖子給了直接方法。帖子表述如下:
******************************************************************
'引用ADO(Microsoft ActiveX Data Objects 2.X Library)
Private Sub Command1_Click()
On Error GoTo err
Dim cn As New ADODB.Connection
'具體的數據庫連接請自己改過來
cn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Password=123;Initial Catalog=dataBase001;Data Source=mySERVICE"
cn.CursorLocation = adUseClient
cn.Open
cn.Execute "select * into NewTable from OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;HDR=Yes;database=c:/Test.xls;','select * from [Sheet1$]')"
cn.Close
Set cn=Nothing
Exit Sub
err:
MsgBox err.Description
End Sub
********************************************************************
由於剛接觸數據庫,知道這用的是ADO的方法,但是不知道他那引用ADO是什麼意思,跑起代碼總是第一個聲明就錯了。後來才知道要在工程->引用裏把Microsoft ActiveX Data Library 2.x 選上。
現在目標已經實現,想把其中的幾個點記錄一下.
1.與sql的連接
這是一個最頭大的問題,個人覺得最重要的就是把身份驗證設爲“混合模式”,用“windows模式”安全但是對編程開發很不便。在想方便就是選擇“空密碼”;
2.connectionstring
連接字符串各個參數的順序可以互換,Initial Catalog指數據庫的名稱,Data Source指數據庫服務器的地址。
3.sql語句中變量作爲參數
變量還放在原參數的位置,但要在其兩側放上&,在加兩個雙引號,比如下句:
select * into NewTable from
現在用變量table代替NewTable
select * into " & table & " from
最後實現的代碼如下:
Private Sub Command1_Click()
On Error GoTo err
Dim cn As New ADODB.Connection
database = Text3.Text
table = Text2.Text
'cn.ConnectionString = "Provider=SQLOLEDB.1;Password=;Persist Security Info=false;User ID=sa;Initial Catalog=" & database & ";Data Source=(local)"
cn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=false;User ID=sa;Password=;Initial Catalog=" & database & ";Data Source=(local)"
cn.CursorLocation = adUseClient
cn.Open
'cn.Execute "select * into NewTable from OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;HDR=yes;database=e:/test.xls;','select * from [Sheet1$]')"
cn.Execute "select * into " & table & " from OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;HDR=yes;database=" & filenamefet & ";','select * from [Sheet1$]')"
cn.Close
Set cn = Nothing
MsgBox "ok!"
Exit Sub
err:
MsgBox err.Description
End Sub
Private Sub Command2_Click()
CommonDialog1.Filter = "EXCEL文件(*.xls)|*.xls"
CommonDialog1.ShowOpen
filenamefet = CommonDialog1.FileName
Text1.Text = filenamefet
End Sub
******************************************************************
'引用ADO(Microsoft ActiveX Data Objects 2.X Library)
Private Sub Command1_Click()
On Error GoTo err
Dim cn As New ADODB.Connection
'具體的數據庫連接請自己改過來
cn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Password=123;Initial Catalog=dataBase001;Data Source=mySERVICE"
cn.CursorLocation = adUseClient
cn.Open
cn.Execute "select * into NewTable from OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;HDR=Yes;database=c:/Test.xls;','select * from [Sheet1$]')"
cn.Close
Set cn=Nothing
Exit Sub
err:
MsgBox err.Description
End Sub
********************************************************************
由於剛接觸數據庫,知道這用的是ADO的方法,但是不知道他那引用ADO是什麼意思,跑起代碼總是第一個聲明就錯了。後來才知道要在工程->引用裏把Microsoft ActiveX Data Library 2.x 選上。
現在目標已經實現,想把其中的幾個點記錄一下.
1.與sql的連接
這是一個最頭大的問題,個人覺得最重要的就是把身份驗證設爲“混合模式”,用“windows模式”安全但是對編程開發很不便。在想方便就是選擇“空密碼”;
2.connectionstring
連接字符串各個參數的順序可以互換,Initial Catalog指數據庫的名稱,Data Source指數據庫服務器的地址。
3.sql語句中變量作爲參數
變量還放在原參數的位置,但要在其兩側放上&,在加兩個雙引號,比如下句:
select * into NewTable from
現在用變量table代替NewTable
select * into " & table & " from
最後實現的代碼如下:
Private Sub Command1_Click()
On Error GoTo err
Dim cn As New ADODB.Connection
database = Text3.Text
table = Text2.Text
'cn.ConnectionString = "Provider=SQLOLEDB.1;Password=;Persist Security Info=false;User ID=sa;Initial Catalog=" & database & ";Data Source=(local)"
cn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=false;User ID=sa;Password=;Initial Catalog=" & database & ";Data Source=(local)"
cn.CursorLocation = adUseClient
cn.Open
'cn.Execute "select * into NewTable from OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;HDR=yes;database=e:/test.xls;','select * from [Sheet1$]')"
cn.Execute "select * into " & table & " from OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;HDR=yes;database=" & filenamefet & ";','select * from [Sheet1$]')"
cn.Close
Set cn = Nothing
MsgBox "ok!"
Exit Sub
err:
MsgBox err.Description
End Sub
Private Sub Command2_Click()
CommonDialog1.Filter = "EXCEL文件(*.xls)|*.xls"
CommonDialog1.ShowOpen
filenamefet = CommonDialog1.FileName
Text1.Text = filenamefet
End Sub
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.