求一段利用c++访问数据库并查询数据库返回集合的一段代码
SQL2005 和MySql
c++访问数据库
答案:2 悬赏:10 手机版
解决时间 2021-01-28 21:02
- 提问者网友:謫仙
- 2021-01-28 14:06
最佳答案
- 五星知识达人网友:毛毛
- 2021-01-28 15:16
就拿SQL作比方:
首先在头文件中增加以下代码:
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","rsEOF")
这样就可以使用数据库了
然后连接数据库:
CoInitialize(NULL);
_ConnectionPtr pConn(__uuidof(Connection));
_RecordsetPtr pRst(__uuidof(Recordset));
pConn->ConnectionString="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=登录用户名;Initial Catalog=数据库名";
pConn->Open("", "登录用户名(如果上一行代码已经指定,此处可不填)", "登录用户密码(没有可不填)", adConnectUnspecified);
然后查询:
pRst=pConn->Execute("SELECt * FROM patient;", NULL, adCmdText);
while (!pRst->rsEOF)
{
_variant_t rs;
rs=pRst->GetCollect("列名");
if (rs.vt != VT_NULL)
{//此处(_bstr_t)rs就是对应列的结果
}
pRst->MoveNext();
}
使用完数据库记得关闭:
pRst->Close();
pConn->Close();
pRst.Release();
pConn.Release();
CoUninitialize();
首先在头文件中增加以下代码:
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","rsEOF")
这样就可以使用数据库了
然后连接数据库:
CoInitialize(NULL);
_ConnectionPtr pConn(__uuidof(Connection));
_RecordsetPtr pRst(__uuidof(Recordset));
pConn->ConnectionString="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=登录用户名;Initial Catalog=数据库名";
pConn->Open("", "登录用户名(如果上一行代码已经指定,此处可不填)", "登录用户密码(没有可不填)", adConnectUnspecified);
然后查询:
pRst=pConn->Execute("SELECt * FROM patient;", NULL, adCmdText);
while (!pRst->rsEOF)
{
_variant_t rs;
rs=pRst->GetCollect("列名");
if (rs.vt != VT_NULL)
{//此处(_bstr_t)rs就是对应列的结果
}
pRst->MoveNext();
}
使用完数据库记得关闭:
pRst->Close();
pConn->Close();
pRst.Release();
pConn.Release();
CoUninitialize();
全部回答
- 1楼网友:渡鹤影
- 2021-01-28 15:32
这个过程有点复杂,详细请参阅孙鑫《vc++深入详解》最后一章,hook和数据库访问技术,那里讲得更明白! #include <iostream> #include <string> using namespace std; //导入ado动态链接库,必须的 #import "c:\program files\common files\system\ado\msado15.dll"no_namespace rename("eof","adoeof") void main() { _connectionptr m_pconnection; //创建智能指针,必须的 m_pconnection.createinstance(__uuidof(connection)); //或 m_pconnection.createinstance("adodb.connection"); coinitialize(null); //初始化com,必须的 try { //连接字符串,student为数据库名 m_pconnection->connectionstring="provider=sqloledb.1;password=sa;persist security info=true;user id=sa;initial catalog=student"; m_pconnection->open(" "," "," ",admodeunknown); //调用open方法 cout<<"1"<<endl; } catch(_com_error e) //捕获连接异常 { cout<<"数据库初始化错误! "<<endl; return ; } cout<<"连接成功!"<<endl; _recordsetptr prst(__uuidof(recordset)); prst=m_pconnection->execute("select * from student",null,adcmdtext);//使用execute方法,student为表名 if(!prst>adoeof) prst>movefirst(); else { cout<<"表内数据为空"<<endl; return; } // 读入库中各字段并加入列表框中 _variant_t var; string strname; while(!prst>adoeof) { var = prst>getcollect("name"); if(var.vt != vt_null) strname = (lpcstr)_bstr_t(var); prst>movenext(); } //关闭 prst->close(); m_pconnection->close(); prst.release(); m_pconnection->release(); couninitialize(); //释放com }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯