本文以VC實(shí)例介紹了實(shí)現(xiàn)數(shù)據(jù)庫(kù)操作的各種方法,包括打開數(shù)據(jù)庫(kù)、關(guān)聯(lián)記錄集、讀取Excel數(shù)據(jù)、執(zhí)行SQL查詢、創(chuàng)建存取字符串等,相信對(duì)于初學(xué)VC的朋友有一定的參考價(jià)值,主要功能代碼如下:
//打開數(shù)據(jù)庫(kù)CDatabase database;database.OpenEx( _T( "DSN=zhuxue" ),CDatabase::noOdbcDialog);//zhuxue為數(shù)據(jù)源名稱//關(guān)聯(lián)記錄集CRecordset recset(&database);//查詢記錄CString sSql1="";sSql1 = "SELECT * FROM tablename" ;recset.Open(CRecordset::forwardOnly, sSql1, CRecordset::readOnly);int ti=0;CDBVariant var;//var可以轉(zhuǎn)換為其他類型的值while (!recset.IsEOF()){ //讀取Excel內(nèi)部數(shù)值 recset.GetFieldValue("id",var); jiangxiang[ti].id=var.m_iVal; recset.GetFieldValue("name", jiangxiang[ti].name); ti++; recset.MoveNext();}recset.Close();//關(guān)閉記錄集//執(zhí)行sql語(yǔ)句CString sSql="";sSql+="delete * from 院系審核";//清空表database.ExecuteSQL(sSql);sSql也可以為Insert ,Update等語(yǔ)句//讀取字段名sSql = "SELECT * FROM Sheet1"; //讀取的文件有Sheet1表的定義,或?yàn)楸境绦蛏傻谋?//執(zhí)行查詢語(yǔ)句recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly);int excelColCount=recset.GetODBCFieldCount();//列數(shù)CString excelfield[30];//得到記錄集字段集合中的字段總個(gè)數(shù)for(i=0;i<excelColCount;i++){ CODBCFieldInfo fieldinfo; recset.GetODBCFieldInfo(i,fieldinfo); excelfield[i].name =fieldinfo.m_strName;//字段名}//打開excel文件CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)"; //Excel安裝驅(qū)動(dòng)CString sSql,sExcelFile; //sExcelFile為excel的文件路徑TRY{//創(chuàng)建存取的字符串sSql.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=/"%s/";DBQ=%s",sDriver, sExcelFile, sExcelFile);//創(chuàng)建Excel表格數(shù)據(jù)庫(kù) if( database.OpenEx(sSql,CDatabase::noOdbcDialog) ){//可以把excel作為一個(gè)數(shù)據(jù)庫(kù)操作}}catch(e){ TRACE1("Excel驅(qū)動(dòng)未安裝: %s",sDriver); AfxMessageBox("讀取失敗,請(qǐng)檢查是否定義數(shù)據(jù)區(qū)Sheet1");}新聞熱點(diǎn)
疑難解答
圖片精選