#include "StdAfx.h"
#include "..\include\adodb.h"
#include <adoint.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
static char *CreateSTR(const char *s)
{
char *p = NULL;
if(s)
{
p = new char[strlen(s) + 1];
strcpy(p, s);
}
return p;
}
static char *CreateSTR(const wchar_t *s)
{
char *p = NULL;
if(s)
{
int len = wcslen(s);
p = new char[len * 2 + 1];
WideCharToMultiByte(CP_ACP, 0, s, len + 1, p, len * 2 + 1, NULL, NULL);
}
return p;
}
static char *CreateSTR(const void *s, int len)
{
char *p = NULL;
if(len > 0)
{
p = new char[len + 1];
if(s)
memcpy(p, s, len);
p[len] = '\0';
}
return p;
}
static wchar_t *CreateWSTR(const char *s)
{
wchar_t *p = NULL;
if(s)
{
int len = strlen(s) + 1;
p = new wchar_t[len];
MultiByteToWideChar(CP_ACP, 0, s, len, p, len);
}
return p;
}
static wchar_t *CreateWSTR(const wchar_t *s)
{
wchar_t *p = NULL;
if(s)
{
p = new wchar_t[wcslen(s) + 1];
wcscpy(p, s);
}
return p;
}
static wchar_t *CreateWSTR(const void *s, int len)
{
char *p = NULL;
if(len > 0)
{
p = new char[len + 4];
if(s)
memcpy(p, s, len);
(long &)p[len] = 0;
}
return (wchar_t *)p;
}
static void *CreateBYTES(const void *s, int len)
{
void *p = NULL;
if(len > 0)
{
p = new char[len];
if(s)
memcpy(p, s, len);
}
return p;
}
static BSTR CreateBSTR(const char *s)
{
BSTR p = NULL;
if(s)
{
int len = strlen(s);
p = SysAllocStringLen(NULL, len);
int len2 = MultiByteToWideChar(CP_ACP, 0, s, len + 1, p, len + 1) - 1;
if(len2 < len)
SysReAllocStringLen(&p, NULL, len2);
}
return p;
}
static BSTR CreateBSTR(const wchar_t *s)
{
return SysAllocString(s);
}
static void FreeBSTR(BSTR &s)
{
SysFreeString(s);
s = NULL;
}
static void CreateConnection(void *&connection)
{
CLSID clsid;
CLSIDFromProgID(L"ADODB.Connection", &clsid);
if(CoCreateInstance(clsid, NULL, CLSCTX_ALL, __uuidof(_ADOConnection), &connection) != S_OK)
OutputDebugString("创建数据库连接失败,请确认调用CoInitialize函数\n");
}
static void ShowError(_ADOConnection *connection)
{
ADOErrors *errors = NULL;
connection->get_Errors(&errors);
if(!errors)
return;
long count = 0;
errors->get_Count(&count);
for(long i = 0; i < count; i++)
{
VARIANT index;
index.vt = VT_I4;
index.lVal = i;
ADOError *error = NULL;
errors->get_Item(index, &error);
if(error)
{
BSTR desc = NULL;
error->get_Description(&desc);
error->Release();
if(desc)
{
OutputDebugStringW(desc);
OutputDebugStringW(L"\n");
FreeBSTR(desc);
}
}
}
errors->Release();
}
/*BEGIN_NAMESPACE(adodb)*/namespace adodb {
varchar::varchar()
{
m_string = NULL;
}
varchar::varchar(const varchar &s)
{
m_string = CreateSTR(s.m_string);
}
varchar::varchar(const char *s)
{
m_string = CreateSTR(s);
}
varchar::varchar(const nvarchar &s)
{
m_string = CreateSTR(s.m_string);
}
varchar::varchar(const wchar_t *s)
{
m_string = CreateSTR(s);
}
varchar::varchar(const varbinary &s)
{
m_string = CreateSTR(s.m_data, s.m_length);
}
varchar::varchar(varchar &s, int)
{
m_string = s.m_string;
s.m_string = NULL;
}
varchar::~varchar()
{
reset();
}
void varchar::reset()
{
if(m_string)
{
delete []m_string;
m_string = NULL;
}
}
varchar &varchar::operator =(const varchar &s)
{
if(this != &s)
{
reset();
m_string = CreateSTR(s.m_string);
}
return *this;
}
varchar &varchar::operator =(const char *s)
{
reset();
m_string = CreateSTR(s);
return *this;
}
varchar &varchar::operator =(const nvarchar &s)
{
reset();
m_string = CreateSTR(s.m_string);
return *this;
}
varchar &varchar::operator =(const wchar_t *s)
{
reset();
m_string = CreateSTR(s);
return *this;
}
varchar &varchar::operator =(const varbinary &s)
{
reset();
m_string = CreateSTR(s.m_data, s.m_length);
return *this;
}
varchar::operator const char *() const
{
return m_string;
}
varchar::operator char *()
{
return m_string;
}
varchar::operator bool() const
{
return m_string != NULL;
}
bool varchar::operator !() const
{
return m_string == NULL;
}
void varchar::set(char *s)
{
reset();
m_string = s;
}
char *varchar::get()
{
char *s = m_string;
m_string = NULL;
return s;
}
nvarchar::nvarchar()
{
m_string = NULL;
}
nvarchar::nvarchar(const nvarchar &s)
{
m_string = CreateWSTR(s.m_string);
}
nvarchar::nvarchar(const wchar_t *s)
{
m_string = CreateWSTR(s);
}
nvarchar::nvarchar(const varchar &s)
{
m_string = CreateWSTR(s.m_string);
}
nvarchar::nvarchar(const char *s)
{
m_string = CreateWSTR(s);
}
nvarchar::nvarchar(const varbinary &s)
{
m_string = CreateWSTR(s.m_data, s.m_length);
}
nvarchar::nvarchar(nvarchar &s, int)
{
m_string = s.m_string;
s.m_string = NULL;
}
nvarchar::~nvarchar()
{
reset();
}
void nvarchar::reset()
{
if(m_string)
{
delete []m_string;
m_string = NULL;
}
}
nvarchar &nvarchar::operator =(const nvarchar &s)
{
if(this != &s)
{
reset();
m_string = CreateWSTR(s.m_string);
}
return *this;
}
nvarchar &nvarchar::operator =(const wchar_t *s)
{
reset();
m_string = CreateWSTR(s);
return *this;
}
nvarchar &nvarchar::operator =(const varchar &s)
{
reset();
m_string = CreateWSTR(s.m_string);
return *this;
}
nvarchar &nvarchar::operator =(const char *s)
{
reset();
m_string = CreateWSTR(s);
return *this;
}
nvarchar &nvarchar::operator =(const varbinary &s)
{
reset();
m_string = CreateWSTR(s.m_data, s.m_length);
return *this;
}
nvarchar::operator const wchar_t *() const
{
return m_string;
}
nvarchar::operator wchar_t *()
{
return m_string;
}
nvarchar::operator bool() const
{
return m_string != NULL;
}
bool nvarchar::operator !() const
{
return m_string == NULL;
}
void nvarchar::set(wchar_t *s)
{
reset();
m_string = s;
}
wchar_t *nvarchar::get()
{
wchar_t *s = m_string;
m_string = NULL;
return s;
}
varbinary::varbinary()
{
m_data = NULL;
m_length = 0;
}
varbinary::varbinary(const varbinary &s)
{
m_data = CreateBYTES(s.m_data, s.m_length);
m_length = s.m_length;
}
varbinary::varbinary(const void *s, int len)
{
if(len < 0)
len = 0;
m_data = CreateBYTES(s, len);
m_length = len;
}
varbinary::varbinary(const varchar &s)
{
m_length = (s.m_string ? strlen(s.m_string) : 0);
m_data = CreateBYTES(s.m_string, m_length);
}
varbinary::varbinary(const char *s)
{
m_length = (s ? strlen(s) : 0);
m_data = CreateBYTES(s, m_length);
}
varbinary::varbinary(const nvarchar &s)
{
m_length = (s.m_string ? wcslen(s.m_string) * 2 : 0);
m_data = CreateBYTES(s.m_string, m_length);
}
varbinary::varbinary(const wchar_t *s)
{
m_length = (s ? wcslen(s) * 2 : 0);
m_data = CreateBYTES(s, m_length);
}
varbinary::varbinary(varbinary &s, int)
{
m_data = s.m_data;
m_length = s.m_length;
s.m_data = NULL;
s.m_length = 0;
}
varbinary::~varbinary()
{
reset();
}
void varbinary::reset()
{
if(m_data)
{
delete [](unsigned char *)m_data;
m_data = NULL;
m_length = 0;
}
}
varbinary &varbinary::operator =(const varbinary &s)
{
if(this != &s)
{
reset();
m_data = CreateBYTES(s.m_data, s.m_length);
m_length = s.m_length;
}
return *this;
}
varbinary &varbinary::operator =(const varchar &s)
{
reset();
m_length = (s.m_string ? strlen(s.m_string) : 0);
m_data = CreateBYTES(s.m_string, m_length);
return *this;
}
varbinary &varbinary::operator =(const char *s)
{
reset();
m_length = (s ? strlen(s) : 0);
m_data = CreateBYTES(s, m_length);
return *this;
}
varbinary &varbinary::operator =(const nvarchar &s)
{
reset();
m_length = (s.m_string ? wcslen(s.m_string) * 2 : 0);
m_data = Cr
没有合适的资源?快使用搜索试试~ 我知道了~
adodb.rar_c 连接sqlserver_sqlserver 封装
共74个文件
h:11个
cpp:10个
obj:8个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 137 浏览量
2022-09-14
22:19:24
上传
评论
收藏 14.43MB RAR 举报
温馨提示
封装连接数据库及常用增删改查等操作的动态库源码,简单,方便的在程序中使用SQLServer数据库。
资源推荐
资源详情
资源评论
收起资源包目录
adodb.rar (74个子文件)
adodb
test
test.vcproj.907FCD25264B40D.szwlc.user 1KB
stdafx.cpp 135B
Resource.h 480B
test.vcproj 6KB
test.cpp 3KB
res
test.rc2 360B
Toolbar.bmp 1KB
test.ico 21KB
testDoc.ico 1KB
stdafx.h 2KB
test.vcproj.MICROSOF-F24B17.szzn.user 1KB
testView.cpp 2KB
test.h 452B
MainFrm.cpp 2KB
testDoc.cpp 976B
testDoc.h 534B
debug
test.obj 35KB
test.res 27KB
testDoc.obj 21KB
stdafx.obj 328KB
BuildLog.htm 7KB
mt.dep 67B
vc80.pdb 684KB
test.exe.intermediate.manifest 629B
vc80.idb 699KB
testView.obj 34KB
test.pch 13.06MB
MainFrm.obj 33KB
MainFrm.h 655B
test.rc 9KB
test.aps 49KB
release
testView.h 773B
database
stdafx.cpp 139B
Resource.h 365B
res
database.rc2 364B
database.h 407B
stdafx.h 2KB
include
adodb.h 7KB
database.aps 18KB
database.rc 2KB
src
adodb.cpp 33KB
database.vcproj.MICROSOF-F24B17.szzn.user 1KB
database.def 105B
database.vcproj.907FCD25264B40D.szwlc.user 1KB
database.vcproj 5KB
debug
adodb.obj 180KB
stdafx.obj 333KB
BuildLog.htm 9KB
database.res 32B
databaseD.dll.intermediate.manifest 629B
database.obj 17KB
mt.dep 67B
vc80.pdb 740KB
vc80.idb 723KB
databaseD.pch 13.63MB
database.cpp 1KB
release
adodb.sln 1KB
debug
databaseD.ilk 952KB
adodb.h 7KB
a.cpp 1007B
test.ilk 1.33MB
databaseD.pdb 3.25MB
test.exe 212KB
b.cpp 1007B
databaseD.dll 196KB
b.vbs 1KB
databaseD.exp 26KB
databaseD.lib 43KB
test.pdb 3.16MB
adodb.ncb 16.53MB
adodb.suo 26KB
release
database.pdb 2.82MB
database.lib 43KB
database.dll 34KB
共 74 条
- 1
资源评论
- vanguardsmith2023-10-05实在是宝藏资源、宝藏分享者!感谢大佬~
寒泊
- 粉丝: 75
- 资源: 1万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功