//
#include "stdafx.h"
#include "iostream"
#include "string"
#include "vector"
//步骤1:添加对ADO的支持
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
using namespace std
int _tmain(int argc, _TCHAR* argv[])
{
CoInitialize(NULL) //初始化COM环境
_ConnectionPtr pMyConnect(__uuidof(Connection))//定义连接对象并实例化对象
_RecordsetPtr pRst(__uuidof(Recordset))//定义记录集对象并实例化对象
try
{
//步骤2:创建数据源连接
/*打开数据库“SQLServer”,这里需要根据自己PC的数据库的情况 */
pMyConnect->Open("Provider=SQLOLEDB Server=.Database=AIS2 uid=sa pwd=","","",adModeUnknown)
}
catch (_com_error &e)
{
cout<<"Initiate failed!"<<endl
cout<<e.Description()<<endl
cout<<e.HelpFile()<<endl
return 0
}
cout<<"Connect succeed!"<<endl
//步骤3:对数据源中的数据库/表进行 *** 作
try
{
pRst = pMyConnect->Execute("select * from gendat",NULL,adCmdText)//执行SQL: select * from gendat
if(!pRst->BOF)
{
pRst->MoveFirst()
}
else
{
cout<<"Data is empty!"<<endl
return 0
}
vector<_bstr_t> column_name
/*存储表的所有列名,显示表的列名*/
for(int i=0 i< pRst->Fields->GetCount()i++)
{
cout<<pRst->Fields->GetItem(_variant_t((long)i))->Name<<" "
column_name.push_back(pRst->Fields->GetItem(_variant_t((long)i))->Name)
}
cout<<endl
/*对表进行遍历访问,显示表中每一行的内容*/
while(!pRst->adoEOF)
{
vector<_bstr_t>::iterator iter=column_name.begin()
for(iteriter!=column_name.end()iter++)
{
if(pRst->GetCollect(*iter).vt !=VT_NULL)
{
cout<<(_bstr_t)pRst->GetCollect(*iter)<<" "
}
else
{
cout<<"NULL"<<endl
}
}
pRst->MoveNext()
cout<<endl
}
}
catch(_com_error &e)
{
cout<<e.Description()<<endl
cout<<e.HelpFile()<<endl
return 0
}
//步骤4:关闭数据源
/*关闭数据库并释放指针*/
try
{
pRst->Close() //关闭记录集
pMyConnect->Close()//关闭数据库
pRst.Release()//释放记录集对象指针
pMyConnect.Release()//释放连接对象指针
}
catch(_com_error &e)
{
cout<<e.Description()<<endl
cout<<e.HelpFile()<<endl
return 0
}
CoUninitialize() //释放COM环境
return 0
}
1、配置ODBC数据源
。
2、使用
SQL函数
进行连接。
对于1、配置数据源,配置完以后就可以编程 *** 作数据库了。
对于2、使用SQL函数进行连接,参考代码如下:
#include
#include
#include
void
main()
{
HENV
henv
//环境
HDBC
hdbc
//数据源句柄
HSTMT
hstmt
//执行语句句柄
unsigned
char
datasource[]="数据源名称"
//即源中设置的源名称
unsigned
char
user[]=
"用户名"
//数据库的帐户名
unsigned
char
pwd[]=
"密码"
//数据库的密码
unsigned
char
search[]="select
xm
from
stu
where
xh=0"
SQLRETURN
retcode
//记录各SQL函数的返回情况
//
分配环境句柄
retcode=
SQLAllocEnv(&henv)
//
等介于
SQLAllocHandle(SQL_HANDLE_ENV,
SQL_NULL
,
&henv)
//
设置ODBC环境版本号为3.0
retcode=
SQLSetEnvAttr(henv,
SQL_ATTR_ODBC_VERSION,
(void*)SQL_OV_ODBC3,
0)
//
分配连接句柄
retcode=
SQLAllocConnect(henv,&hdbc)
//
等介于
SQLAllocHandle(SQL_HANDLE_DBC,
henv,
&hdbc)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)