VC實(shí)現(xiàn)ODBC數(shù)據(jù)庫操作實(shí)例解析
本文以VC實(shí)例介紹了實(shí)現(xiàn)數(shù)據(jù)庫操作的各種方法,包括打開數(shù)據(jù)庫、關(guān)聯(lián)記錄集、讀取Excel數(shù)據(jù)、執(zhí)行SQL查詢、創(chuàng)建存取字符串等,相信對(duì)于初學(xué)VC的朋友有一定的參考價(jià)值,主要功能代碼如下:
//打開數(shù)據(jù)庫
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語句
CString sSql="";
sSql+="delete * from 院系審核";//清空表
database.ExecuteSQL(sSql);
sSql也可以為Insert ,Update等語句
//讀取字段名
sSql = "SELECT * FROM Sheet1"; //讀取的文件有Sheet1表的定義,或?yàn)楸境绦蛏傻谋?
//執(zhí)行查詢語句
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ù)庫
if( database.OpenEx(sSql,CDatabase::noOdbcDialog) )
{
//可以把excel作為一個(gè)數(shù)據(jù)庫操作
}
}catch(e){
TRACE1("Excel驅(qū)動(dòng)未安裝: %s",sDriver);
AfxMessageBox("讀取失敗,請(qǐng)檢查是否定義數(shù)據(jù)區(qū)Sheet1");
}
相關(guān)文章
C++在C語言基礎(chǔ)之上增強(qiáng)的幾個(gè)實(shí)用特性總結(jié)
這篇文章主要介紹了C++在C語言基礎(chǔ)之上增強(qiáng)的幾個(gè)實(shí)用特性總結(jié),包括C++中更強(qiáng)的類型約束以及結(jié)構(gòu)體方面等一些更加高級(jí)的特性,需要的朋友可以參考下2016-03-03
養(yǎng)成良好的C++編程習(xí)慣之內(nèi)存管理的應(yīng)用詳解
"養(yǎng)成良好的編程習(xí)慣"其實(shí)是相當(dāng)綜合的一個(gè)命題,可以從多個(gè)角度、維度和層次進(jìn)行論述和評(píng)判,如代碼的風(fēng)格、效率和可讀性;模塊設(shè)計(jì)的靈活性、可擴(kuò)展性和耦合度等等,要試圖把所有方面都闡述清楚必須花很多的精力,而且也不一定能闡述得全面2013-05-05
C/C++內(nèi)存泄漏原因分析與應(yīng)對(duì)方法
內(nèi)存泄漏會(huì)導(dǎo)致當(dāng)前應(yīng)用程序消耗更多的內(nèi)存,使得其他應(yīng)用程序可用的內(nèi)存更少了,那么為什么會(huì)內(nèi)存泄漏,我們應(yīng)該怎樣應(yīng)對(duì)內(nèi)存泄漏,所以接下來就給大家詳細(xì)介紹一下C++內(nèi)存泄漏原因分析與應(yīng)對(duì)方法,需要的朋友可以參考下2023-07-07
opengl實(shí)現(xiàn)直線掃描算法和區(qū)域填充算法
這篇文章主要為大家詳細(xì)介紹了opengl實(shí)現(xiàn)直線掃描算法和區(qū)域填充算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04
OpenMP中For Construct對(duì)dynamic的調(diào)度方式詳解
在本篇文章當(dāng)中主要給大家介紹 OpenMp for construct 的實(shí)現(xiàn)原理,與他相關(guān)的動(dòng)態(tài)庫函數(shù)分析以及對(duì) dynamic 的調(diào)度方式進(jìn)行分析,希望對(duì)大家有所幫助2023-02-02

