亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 新建 文本文檔.txt

?? sqlite 3.0使用方法
?? TXT
字號:
Berkeley DB是Sleepcat開發的開源的嵌入式數據庫。具有輕巧、可擴展的優點。但是它不支持SQL語句,而且操作起來相對比較復雜。
下面講講在VC下為了使其能夠存儲數據結構做的封裝。
在google搜索Berkely DB 進入sleepycat下載zip安裝包,編譯。
建立工程TestBerkeleyDB,拷貝libdb43.dll和libdb43.lib到當前工程下,添加libdb43.dll到工程的setting。
把db.h和db_cxx.h拷貝到當前目錄下。
添加icqtypes.h:
#ifndef _ICQ_TYPES_H_
#define _ICQ_TYPES_H_

#include "string"
#include "list"
#include "vector"
#include "bitset"

using namespace std;

typedef unsigned char uint8;
typedef unsigned short uint16;
typedef unsigned long uint32;

typedef list  StrList;
typedef list PtrList;
typedef list UinList;

#endif

添加icqdb.h;
#ifndef _ICQ_DB_H
#define _ICQ_DB_H

#include "icqtypes.h"
#include "db_cxx.h"
#define MAX_BLOCK_SIZE 4096

class DBOutStream {
public:
 DBOutStream() {
  cursor = data;
 }
 char *getData() {
  return data;
 }
 int getSize() {
  return (cursor - data);
 }

 DBOutStream &operator <<(uint8 b);
 DBOutStream &operator <<(uint16 w);
 DBOutStream &operator <<(uint32 dw);
 DBOutStream &operator <<(const char *str);
 DBOutStream &operator <<(const string &str) {
  return operator <<(str.c_str());
 }
 DBOutStream &operator <<(StrList &strList);
 
private:
 char data[MAX_BLOCK_SIZE];
 char *cursor;
};

class DBInStream {
public:
 DBInStream(void *d, int n) {
  cursor = data = (char *) d;
  datalen = n;
 }
 DBInStream &operator >>(uint8 &b);
 DBInStream &operator >>(uint16 &w);
 DBInStream &operator >>(uint32 &dw);
 DBInStream &operator >>(string &str);
 DBInStream &operator >>(StrList &strList);

private:
 char *data;
 char *cursor;
 int datalen;
};

class DBSerialize {
public:
 virtual void save(DBOutStream &out) = 0;
 virtual void load(DBInStream &in) = 0;
};


#endif
添加icqdb.cpp:
#include "stdafx.h"
#include "icqdb.h"
#include "string.h"
#include "icqtypes.h"
#define INDEX_USER  0
#define INDEX_OPTIONS 0xffffffff
#define INDEX_GROUP  0xfffffffe

DBOutStream &DBOutStream::operator <<(uint8 b)
{
 if (cursor <= data + MAX_BLOCK_SIZE - sizeof(b))
  *cursor++ = b;
 return (*this);
}

DBOutStream &DBOutStream::operator <<(uint16 w)
{
 if (cursor <= data + MAX_BLOCK_SIZE - sizeof(w)) {
  *(uint16 *) cursor = w;
  cursor += sizeof(w);
 }
 return (*this);
}

DBOutStream &DBOutStream::operator <<(uint32 dw)
{
 if (cursor <= data + MAX_BLOCK_SIZE - sizeof(dw)) {
  *(uint32 *) cursor = dw;
  cursor += sizeof(dw);
 }
 return (*this);
}

DBOutStream &DBOutStream::operator <<(const char *str)
{
 uint16 len = strlen(str) + 1;
 if (cursor <= data + MAX_BLOCK_SIZE - sizeof(len) - len) {
  *this << len;
  memcpy(cursor, str, len);
  cursor += len;
 }
 return (*this);
}

DBOutStream &DBOutStream::operator <<(StrList &strList)
{
 uint16 n = 0;
 char *old = cursor;
 cursor += sizeof(n);
 
 StrList::iterator i;
 for (i = strList.begin(); i != strList.end(); i++) {
  operator <<(*i);
  n++;
 }
 char *p = cursor;
 cursor = old;
 operator <<(n);
 cursor = p;
 return (*this);
}

DBInStream &DBInStream::operator >>(uint8 &b)
{
 if (cursor <= data + datalen - sizeof(b))
  b = *cursor++;
 else
  b = 0;
 return (*this);
}

DBInStream &DBInStream::operator >>(uint16 &w)
{
 if (cursor <= data + datalen - sizeof(w)) {
  w = *(uint16 *) cursor;
  cursor += sizeof(w);
 } else
  w = 0;
 return (*this);
}

DBInStream &DBInStream::operator >>(uint32 &dw)
{
 if (cursor <= data + datalen - sizeof(dw)) {
  dw = *(uint32 *) cursor;
  cursor += sizeof(dw);
 } else
  dw = 0;
 return (*this);
}

DBInStream &DBInStream::operator >>(string &str)
{
 uint16 len;
 operator >>(len);

 if (cursor <= data + datalen - len && !cursor[len - 1]) {
  str = cursor;
  cursor += len;
 } else
  str = "";
 return (*this);
}

DBInStream &DBInStream::operator >>(StrList &strList)
{
 uint16 num;
 operator >>(num);
 int n = (int) num;

 strList.clear();
 while (n-- > 0) {
  string s;
  operator >>(s);
  strList.push_back(s);
 }
 return (*this);
}

添加CPerson類:
CPerson.h:
// Person.h: interface for the CPerson class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_PERSON_H__D259A8B7_7ACB_4624_8C9E_394B11FFA5C9__INCLUDED_)
#define AFX_PERSON_H__D259A8B7_7ACB_4624_8C9E_394B11FFA5C9__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "icqdb.h"

class CPerson: public DBSerialize
{
public:
 CPerson();
 virtual ~CPerson();
public:
 string Name;
 uint16 age;
 string Describe;
 void save(DBOutStream &out);
 void load(DBInStream &in);
};
#endif // !defined(AFX_PERSON_H__D259A8B7_7ACB_4624_8C9E_394B11FFA5C9__INCLUDED_)

Person.cpp:
// Person.cpp: implementation of the CPerson class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "TestBerkeleyDB.h"
#include "Person.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CPerson::CPerson()
{

}

CPerson::~CPerson()
{

}
void CPerson::save(DBOutStream &out)
{
 out << Name << age << Describe;
}

void CPerson::load(DBInStream &in)
{
 in >> Name >> age >> Describe;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产日产图区| 亚洲欧洲成人av每日更新| 国产a级毛片一区| 成人av资源在线观看| 亚洲福利视频导航| 国产精品美女久久久久aⅴ| 在线播放日韩导航| 一本久久a久久免费精品不卡| 激情久久五月天| 亚欧色一区w666天堂| 中文字幕一区在线观看视频| 欧美大胆一级视频| 欧美日韩国产色站一区二区三区| 成人黄色大片在线观看| 激情综合五月天| 丝袜诱惑制服诱惑色一区在线观看| 中文字幕精品一区| 精品福利一区二区三区 | 国产精品一色哟哟哟| 亚洲午夜精品久久久久久久久| 国产欧美一区二区精品性色超碰| 日韩天堂在线观看| 欧美高清www午色夜在线视频| 色噜噜狠狠色综合中国| 成人av在线网站| 国产一区91精品张津瑜| 美女视频免费一区| 青青草一区二区三区| 香蕉久久一区二区不卡无毒影院| 亚洲视频小说图片| 国产精品国产自产拍高清av| 国产日韩精品一区二区三区在线| 久久久亚洲欧洲日产国码αv| 亚洲精品一区二区三区影院 | 国产精品1区2区3区在线观看| 久久综合综合久久综合| 日韩国产欧美在线视频| 五月天中文字幕一区二区| 一级做a爱片久久| 亚洲精品乱码久久久久| 怡红院av一区二区三区| 亚洲精品日日夜夜| 有码一区二区三区| 亚洲图片有声小说| 三级亚洲高清视频| 免费国产亚洲视频| 精品一区二区影视| 国产成人在线观看| 成人av在线资源网站| 91猫先生在线| 欧美日韩免费视频| 欧美一区二区三区婷婷月色| 日韩三级精品电影久久久 | 国产精品一级片| 国产suv精品一区二区883| 成人av午夜电影| 在线看一区二区| 欧美理论电影在线| 精品国内二区三区| 国产精品视频一区二区三区不卡| 国产精品乱码一区二区三区软件| 亚洲日本丝袜连裤袜办公室| 亚洲成人先锋电影| 蜜臀av一区二区在线观看| 国产福利一区二区三区视频| 成人h精品动漫一区二区三区| 在线观看日韩高清av| 欧美精品在线观看播放| 精品国精品国产尤物美女| 国产精品久久久久久久久动漫| 亚洲黄色片在线观看| 另类欧美日韩国产在线| 粉嫩av亚洲一区二区图片| 欧美在线小视频| www国产亚洲精品久久麻豆| 中文字幕亚洲不卡| 美日韩一级片在线观看| 9久草视频在线视频精品| 欧美性受极品xxxx喷水| 久久先锋影音av| 亚洲码国产岛国毛片在线| 蜜乳av一区二区| 99久久久无码国产精品| 91精品国产麻豆| 亚洲男人的天堂网| 精品综合久久久久久8888| 99re6这里只有精品视频在线观看| 制服丝袜亚洲色图| 亚洲色图丝袜美腿| 精品亚洲免费视频| 欧洲亚洲国产日韩| 久久精品亚洲麻豆av一区二区| 亚洲乱码国产乱码精品精可以看| 麻豆中文一区二区| 欧美亚洲免费在线一区| 久久久www成人免费毛片麻豆| 亚洲国产精品精华液网站| 国产不卡在线视频| 欧美一级爆毛片| 亚洲综合自拍偷拍| 成人综合在线观看| 日韩午夜在线观看| 亚洲一区二区三区四区在线免费观看| 国产高清精品网站| 精品毛片乱码1区2区3区| 一区二区高清在线| fc2成人免费人成在线观看播放| 欧美一级日韩一级| 亚洲午夜电影网| 成人动漫精品一区二区| 26uuu色噜噜精品一区二区| 日韩国产成人精品| 欧美日韩一区二区三区在线| 亚洲欧洲美洲综合色网| 国产精品一区二区免费不卡 | 国产成人午夜高潮毛片| 欧美v国产在线一区二区三区| 亚洲成人av福利| 色婷婷久久一区二区三区麻豆| 欧美国产日韩亚洲一区| 国产一区二区在线影院| 91精品国产综合久久婷婷香蕉| 亚洲午夜久久久久久久久电影院| 不卡视频免费播放| 国产精品久久久久一区二区三区 | 精品动漫一区二区三区在线观看| 午夜精品久久久久久久99水蜜桃| 色综合天天做天天爱| 国产精品久久久久久久久快鸭 | 欧美一区二区播放| 午夜av一区二区三区| 欧美日韩一区二区在线观看视频| 一区二区不卡在线视频 午夜欧美不卡在| 99精品视频在线播放观看| 日本一区二区高清| 成人app下载| 日韩一区在线免费观看| 91色porny蝌蚪| 亚洲综合清纯丝袜自拍| 欧美日韩综合一区| 水野朝阳av一区二区三区| 7799精品视频| 紧缚捆绑精品一区二区| 久久你懂得1024| 国产寡妇亲子伦一区二区| 欧美国产一区二区在线观看| 成人app软件下载大全免费| 国产精品久久久久久福利一牛影视| 成人性色生活片免费看爆迷你毛片| 国产日产欧美一区二区视频| 国产福利一区二区三区视频| 中文字幕在线一区免费| 日本伦理一区二区| 午夜视频一区二区| 日韩视频一区二区在线观看| 国产麻豆精品在线观看| 国产精品国产馆在线真实露脸 | 亚洲一二三四在线| 欧美日韩国产欧美日美国产精品| 奇米亚洲午夜久久精品| 久久亚洲免费视频| 99精品久久免费看蜜臀剧情介绍| 亚洲在线免费播放| 欧美大片一区二区| 国产成人综合网站| 一区二区日韩电影| 91精品蜜臀在线一区尤物| 国产一区二区电影| 日韩理论片中文av| 这里只有精品免费| 国产激情一区二区三区四区| 亚洲人成影院在线观看| 欧美一级片免费看| 成人晚上爱看视频| 丝袜国产日韩另类美女| 国产女主播视频一区二区| 欧美性猛交xxxx乱大交退制版| 久久精品国产一区二区| 亚洲视频小说图片| 精品国产凹凸成av人导航| 91同城在线观看| 久久99精品国产麻豆不卡| 亚洲日本va午夜在线影院| 欧美一区二区在线免费观看| 成人深夜视频在线观看| 五月婷婷久久丁香| 国产精品高清亚洲| 欧美sm美女调教| 欧美午夜精品一区| 成人黄色av网站在线| 美女国产一区二区三区| 樱桃视频在线观看一区| 日本一区二区视频在线| 欧美精品久久天天躁| 91色乱码一区二区三区| 国产在线看一区| 日韩国产精品91| 亚洲尤物视频在线| 国产精品久久福利| 26uuu色噜噜精品一区二区|