如果以下有不懂,可以加我微信交流xpj13098878561
VC6.0連接數(shù)據(jù)庫,并把大量數(shù)據(jù)從ACCess轉移到SQL sever2008 的問題(親測可用)
VC6.0下載連接https://pan.baidu.com/s/1MwQRm-ag-JJYL57al95Wzg&shfl=sharepset,在win7,win10上可用。
SQL sever2008R2下載連接https://pan.baidu.com/s/1EjllJ11uqhIpny_PBbd7qw&shfl=sharepset,win7和win10上都可用
下載完成之后安裝,安裝教程百度
現(xiàn)需要在VC上新建一個工程,VC需要連接一個庫,在頭文件或者預處理文件上寫上#import “msado15.dll” rename(“EOF”, “EndOfFile”),需將名字為msado15的庫文件移到當前目錄下,然后在構造函數(shù)或者其他的函數(shù)中寫上如下數(shù)據(jù)
CADORecordset Rs(&m_Ado);AfxEnableControlContainer();AfxOleInit();//初始化COM庫 ::CoInitialize(NULL);// 初始化OLE/COM庫環(huán)境 CADORecordset Rs(&m_Ado);//對SQL進行處理_ConnectionPtr m_pConnection;_RecordsetPtr m_pRecordset;_CommandPtr m_pCommand;/打開accessHRESULT hr;///以上為操縱sQL和access的句柄///打開access數(shù)據(jù)庫if (!m_Ado.IsOpen()){if (! m_Ado.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=sn.mdb")){AfxMessageBox("連接數(shù)據(jù)庫失敗,檢查數(shù)據(jù)庫為是否存在!"); // AfxMessageBox("Can't connect the language database,please check the database is exist!");return;}}
//判斷是否能打開SQLsever數(shù)據(jù)庫,如不報錯,表明此時能打開數(shù)據(jù)庫try{strSQL ="driver={SQL Server};Server="寫上你自己數(shù)據(jù)庫的名字一般為(local)";Database=(此為你創(chuàng)建的庫名);UID=sa;PWD=123456(此為你設置的密碼)";if (SUCCEEDED(hr)){hr = m_pConnection -> Open(_bstr_t(strSQL), "" , "" , adModeUnknown); }}catch (_com_error e) /// 捕捉異常 {CString errormessage;errormessage.Format("SQL sever連接數(shù)據(jù)庫失敗!\r\n錯誤信息:%s" ,e.ErrorMessage());AfxMessageBox(errormessage); /// 顯示錯誤信息
// return FALSE;} /// b.建立連接,創(chuàng)建記錄集
以上如若都不報錯,表明此時access和SQLsever 2008R2都已進打開_bstr_t jhlSql;jhlSql="select * from SQL";//FXL_YG為數(shù)據(jù)庫中的表名m_pRecordset.CreateInstance(_uuidof(Recordset));//?///打開查詢的表m_pRecordset->Open(jhlSql,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);sql打開成功后對access進行讀數(shù)Rs.MoveFirst();//進入ACCess數(shù)據(jù)庫,并取得access里面的值CString csname; CString cchecksum;CString csnkey;CString ckeyid;CString ckeyindex;CString caddtime; for(int i = 0; i < nRsCount; i++){Rs.GetFieldValue(1,csname);Rs.GetFieldValue(2,cchecksum);Rs.GetFieldValue(3,csnkey);Rs.GetFieldValue(4,ckeyid);Rs.GetFieldValue(5,ckeyindex);Rs.GetFieldValue(6,caddtime);///一條條插入到數(shù)據(jù)庫中,此處重點是變量的插入,如若只插入字符串,則將' "+caddtime+" '改為‘abcdefg’CString strIntSet=" INSERT INTO SQL (表名)(sn,checksum,snkey,keyid,keyindex) VALUES ('"+csname+"',' "+cchecksum+" ',' "+csnkey+" ',' "+ckeyid+" ',' "+ckeyindex+" ')";m_pConnection->Execute( _bstr_t(strIntSet),NULL,adCmdText);//將數(shù)據(jù)集插入數(shù)據(jù)庫Rs.MoveNext();}///最為重要的一條,也是折磨我好久的一條,數(shù)據(jù)庫插入完之后,一定要關閉數(shù)據(jù)庫,否則有些值就插入不成功Rs.Close();
至此,一個函數(shù)已經寫完了,這些代碼可以寫到main()或者其他的函數(shù)中去。
總結
以上是生活随笔為你收集整理的VC6.0连接数据库,并把大量数据从ACCess转移到SQL sever2008 的问题(亲测可用)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。