青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 45,  comments - 232,  trackbacks - 0

工程下載: http://m.shnenglu.com/Files/dyj057/AdoDbv1.0-2007-1-25.rar

前幾日看到有位大哥發布的 ADO 數據庫的封裝,到處是模板,不免有些頭暈,想起自己寫的 ADO 數據庫封裝了,首先聲明沒有模板。但根據我 3 年使用的經驗,確實很實用,

特點:

l???????? 多線程安全的。

l???????? 使用標準 C++ 數據類型,屏蔽了 com 數據類型和異常,減少了復雜性。

l???????? 操作簡單,直觀

1 .下面是使用它進行存儲過程的例子代碼:

異常的處理請參看: http://m.shnenglu.com/dyj057/archive/2007/01/24/17944.html

#include "AdoConn.h"

#include "AdoStoredProc.h"

#include "comm_exception.h"

using namespace C2217::StdLib;

using namespace C2217::Data;

void main()

{

?????? try

?????? {

????????????? CAdoConn _conn("Provider=SQLOLEDB;Data Source=192.9.207.214;Initial Catalog=ibmsweb;User ID=sa; Password=sa;");

????????????? _conn.Open();

????????????? CAdoStoredProc sp(_conn,"Accounts_Roles_Create");

?

????????????? CAdoStringPara para("Description", "Para9", 50);

????????????? sp.AddPara(&para);

?

????????????? int count =0? ;//sp.ExecuteNonQuery();

????????????? cout << " affected cout " << count <<endl;

??????

????????????? CAdoStringPara *pStringPara = dynamic_cast<CAdoStringPara *>(sp["Description"]);

????????????? if(pStringPara)

????????????? {

???????????????????? cout << pStringPara->getValue() <<endl;

????????????? }

?

????????????? sp.ClearParameters();

?

????????????? //Read to dataset

????????????? CAdoRecordSet readResult;

????????????? sp.setSpName("Accounts_Users_Select_All");

????????????? cout << "Read affected item cout : " << sp.Execute(readResult);

?

????????????? //cout << "Read Count :" << readResult.getRecordCount() <<endl;

?????? }

?????? catch(comm_exception &e)

?????? {

????????????? SET_CATCH_POS(e);

????????????? std::cout << e;

?????? }

?????? catch(const exception &e)

?????? {

????????????? cout << e.what();

?????? }

}

2 .讀取數據的例子:

const CAdoConn &? _conn? =S_DeviceDb::instance()->GetAdoConn();

?????? CString sql;

?????? sql.Format("select * from %s where tag_name = '%s' ",

????????????? m_tableName, GetName() );

?????? CAdoRecordSet result;

?????? int count = _conn.Execute(sql, result);

?????? if(count ==1)

?????? {

????????????? result.MoveFirst();

????????????? SetDescription( result.readStr("description").c_str());

????????????? SetUnits( result.readStr("uints").c_str());

????????????? SetType( result.readStr("data_type").c_str());

????????????? SetWritebale( result.readInt("writeable"));

????????????? SetExpress( result.readStr("cacu_express").c_str() );

????????????? SetDeviceAddress( result.readInt("device_address"));

????????????? SetRegisterAddress( result.readInt("register_address"));

????????????? SetDataLen( result.readInt("data_length"));

????????????? SetBitsStartIndex( result.readInt("start_bit_index"));

????????????? SetBitsCount( result.readInt("bit_count"));

?????? }

3 .刪除數據的例子:

const CAdoConn &? _conn? =S_DeviceDb::instance()->GetAdoConn();

?????? CString sql;

?????? sql.Format("delete from %s where tag_name = '%s'", m_tableName, GetName() );

?????? _conn.ExecuteNonQuery( sql);

4 .更新數據的例子:

const CAdoConn & ?_conn? =S_DeviceDb::instance()->GetAdoConn();

?????? CString sql;

?????? sql.Format("update %s set description='%s',? uints='%s', data_type='%s',\

???????????????????? ?? writeable=%d, cacu_express='%s', device_address=%d, register_address=%d, data_length =%d,\

???????????????????? ?? start_bit_index = %d, bit_count = %d where tag_name = '%s' ", m_tableName, GetDescription(), GetUnits(), GetType(),

???????????????????? ?? IsWriteable(), GetExpress(), GetDeviceAddress(), GetRegisterAddress(), GetDataLen(), GetBitsStartIndex(), GetBitsCount(), GetName() );

??????

?????? VERIFY(_conn.ExecuteNonQuery(sql));

posted on 2007-01-26 09:53 天下無雙 閱讀(2053) 評論(2)  編輯 收藏 引用 所屬分類: C/C++

FeedBack:
# re: ADO數據庫操作的C++封裝
2007-01-31 15:07 | eXile
前幾日看到有位大哥發布的 ADO 數據庫的封裝,到處是模板,不免有些頭暈....

呵呵,是說的我嗎?關于模板,我的看法是,在做庫的封裝時,可以無所顧忌地使用,以作最大優化,在做業務邏輯時,盡量不要使用,以便于維護。

我做的封裝,如下所示,表中有哪些字段,什么類型,一目了然,在此引入模板我覺得是必要的。
struct TUser
{
AdoCol<int> m_id;
AdoCol<std::string> m_name;
AdoCol<int> m_type;
AdoCol<AdoBLOB> m_blob;
};


  回復  更多評論
  
# re: ADO數據庫操作的C++封裝
2007-01-31 15:19 | 天下無雙
我明白你的意思,如果程序員對模板不是很熟悉,如像這樣的代碼:
template <class RowT>
void Bind(RowT& r)
{
MY_STATIC_ASSERT(field_count == RowT::size);

r.BindField(fid, "id", &m_id);
r.BindField(fname, "name", &m_name);
r.BindField(ftype, "type", &m_type);
}
要上手還是要一段時間 。  回復  更多評論
  

常用鏈接

留言簿(15)

隨筆分類

隨筆檔案

相冊

我的其它領域Blog

搜索

  •  

積分與排名

  • 積分 - 207930
  • 排名 - 129

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            午夜一区二区三区在线观看| 亚洲在线观看免费| 欧美精品videossex性护士| 美国三级日本三级久久99| 久久精品网址| 蜜臀99久久精品久久久久久软件| 久久久www成人免费无遮挡大片| 久久精品国产亚洲aⅴ| 久久久久久一区二区三区| 欧美成人在线免费观看| 国产精品福利网| 激情五月婷婷综合| 99re热这里只有精品免费视频| 日韩午夜剧场| 亚洲欧美视频在线观看| 久久视频在线看| 亚洲三级电影在线观看| 一区二区三区高清| 久久精品在线免费观看| 欧美日韩成人在线播放| 国产麻豆一精品一av一免费| 怡红院精品视频| 亚洲午夜一区| 久久综合色影院| 99re6热在线精品视频播放速度| 欧美一区二区高清| 欧美午夜精品电影| 亚洲电影在线播放| 午夜精品国产更新| 亚洲电影av| 欧美在线关看| 国产精品久久久久久久电影| 亚洲精品1区2区| 久久国产黑丝| 日韩亚洲欧美一区| 欧美国产日韩一区二区| 伊人精品成人久久综合软件| 午夜精品久久久久久久99热浪潮 | 亚洲一卡二卡三卡四卡五卡| 麻豆av一区二区三区久久| 国产精品嫩草久久久久| 亚洲国产日韩一区| 久久三级视频| 午夜一区二区三区不卡视频| 欧美天天影院| 99国产一区| 欧美激情自拍| 美女精品自拍一二三四| 国外成人在线视频| 性欧美18~19sex高清播放| 日韩一区二区高清| 欧美国产日韩一区二区三区| 亚洲成人在线免费| 麻豆亚洲精品| 久久综合九色欧美综合狠狠| 激情欧美一区| 欧美1区视频| 久久影院午夜论| 亚洲国产精品999| 欧美激情精品久久久久久黑人| 久久综合九色99| 亚洲精品免费网站| 亚洲精品免费在线| 欧美日韩亚洲91| 亚洲男女自偷自拍图片另类| 亚洲天堂免费在线观看视频| 国产伦精品一区二区三区免费迷| 午夜精品在线观看| 性久久久久久久久久久久| 国产亚洲精品高潮| 麻豆精品在线播放| 欧美国产精品中文字幕| 99精品视频免费观看视频| 99精品国产一区二区青青牛奶| 欧美日韩一区高清| 欧美一区二区三区在线| 久久久噜噜噜久久| 亚洲乱码一区二区| 制服诱惑一区二区| 国产一区二区三区自拍| 欧美电影免费观看大全| 欧美日韩在线精品| 午夜精品亚洲| 久久日韩粉嫩一区二区三区| 一本不卡影院| 欧美一二三视频| 亚洲精品久久久久中文字幕欢迎你| 亚洲国产裸拍裸体视频在线观看乱了中文 | 欧美.com| 欧美视频在线观看 亚洲欧| 午夜亚洲性色视频| 免费成人网www| 午夜激情综合网| 久久一区中文字幕| 亚洲女同在线| 欧美+日本+国产+在线a∨观看| 亚洲午夜电影| 久久综合给合| 午夜视频在线观看一区二区| 久久精品人人做人人爽电影蜜月| 亚洲精品久久视频| 午夜宅男久久久| 一本色道久久精品| 久久久久久69| 欧美一区二区精品久久911| 欧美+日本+国产+在线a∨观看| 欧美一区二区三区在线观看| 欧美精品在线视频观看| 老司机成人在线视频| 国产精品九九| 亚洲国产日韩精品| 伊人成年综合电影网| 一区二区三区视频观看| 亚洲美女电影在线| 老司机免费视频久久| 久久久久欧美| 国产日本欧美视频| 亚洲图片欧美午夜| 亚洲视频日本| 欧美另类女人| 亚洲国产视频一区| 亚洲国产视频a| 久久蜜桃精品| 免费不卡在线观看av| 国产一区视频在线看| 亚洲免费综合| 亚洲欧美日韩在线高清直播| 欧美另类在线播放| 最新国产の精品合集bt伙计| 亚洲国产天堂久久综合网| 麻豆国产va免费精品高清在线| 久久亚洲国产精品一区二区| 国产日韩欧美黄色| 欧美一区二区三区免费看 | 亚洲国产综合91精品麻豆| 久久九九99| 久久视频国产精品免费视频在线 | 狠狠色丁香婷婷综合久久片| 亚洲欧美国内爽妇网| 欧美一区二区私人影院日本 | 久久久久久久久综合| 国产亚洲毛片在线| 久久不见久久见免费视频1| 久久国产精品久久久| 国产一区二区成人| 欧美在线日韩在线| 免费在线播放第一区高清av| 亚洲电影免费观看高清完整版| 久久精品综合| 亚洲高清av| 亚洲一区二区免费在线| 国产精品v欧美精品v日韩精品| 亚洲一区二区三区涩| 久久免费午夜影院| 在线日韩av片| 欧美日韩国产系列| 亚洲欧美日韩在线| 免费不卡在线视频| 亚洲午夜国产成人av电影男同| 国产精品一级在线| 久久久人成影片一区二区三区 | 久久嫩草精品久久久精品| 欧美国产一区二区三区激情无套| 99国产精品视频免费观看| 欧美午夜视频一区二区| 亚洲三级电影全部在线观看高清| 欧美紧缚bdsm在线视频| 亚洲免费伊人电影在线观看av| 女人天堂亚洲aⅴ在线观看| 99ri日韩精品视频| 国产农村妇女精品| 欧美成人免费在线视频| 亚洲欧美国产日韩中文字幕 | 久久精品国产视频| 亚洲精品在线电影| 久久精品国产亚洲a| 99re8这里有精品热视频免费| 国产欧美日韩免费看aⅴ视频| 美女主播精品视频一二三四| 国产精品99久久久久久有的能看| 久久久久一区二区三区| 亚洲视频综合在线| 伊人久久av导航| 欧美性大战久久久久| 麻豆久久精品| 欧美一区二区三区精品电影| 亚洲区一区二| 欧美a级理论片| 欧美在线观看www| 一本色道久久综合亚洲精品不| 黑人一区二区| 国产精品入口尤物| 欧美日产在线观看| 麻豆91精品91久久久的内涵| 西西裸体人体做爰大胆久久久| 日韩视频一区二区三区在线播放 | 欧美激情一区二区三区在线| 久久av一区二区| 亚洲午夜一二三区视频| 亚洲国产一区视频|