本人是个新手,想用ADO连接SQL Server数据库,按照书上写了这样一段代码:
#include "stdio.h"
#import "C:\\Program Files\\Common Files\\System\\ado\\msado25.tlb" no_namespace rename("EOF","ENDOFRS")
int main()
{
::CoInitialize(0);
_ConnectionPtr pConn;
pConn.CreateInstance(__uuidof(Connection));//创建连接对象
pConn->ConnectionString = "Provider=SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=考试系统;Data Source=127.0.0.1";//设置连接字符串
pConn ->ConnectionTimeout = 5;//设置连接的超时时间,可选
pConn ->CursorLocation = adUseServer;//设置光标的位置,可选
pConn ->Open("","","",-1);
_variant_t vt;
//得到一个记录集
_RecordsetPtr rs = pConn->Execute("select * from 考生信息",&vt,adCmdText);
//判定记录集是否到达末尾
while (!rs->ENDOFRS)
{
//得到记录的各个列的数据
_variant_t name= rs->Fields->GetItem("姓名")->Value;
char szname[51];
if (name.vt == VT_NULL)
{
strcpy(szname,"NULL");
}
else
{
//如何进行宽字符到ASCII字符的转换
::WideCharToMultiByte(CP_ACP,0,name.bstrVal,-1,szname,sizeof(szname),0,0);
}
printf("%s",szname);
}
pConn->Close();//关闭数据库连接
pConn.Release();//释放数据库连接对象
return 0;
}
在编译的时候没有报错,但是在运行的时候却什么也输出不了,用F10一步步的调试时候发现在
pConn.CreateInstance(__uuidof(Connection));//创建连接对象
这一步的时候pconn的值就是红色的字体,是不是根本就没有连接上对象呢?
请各位大哥指点,谢谢。
最好能有好心的大哥能给个QQ,不甚感激!!!!!
#include "stdio.h"
#import "C:\\Program Files\\Common Files\\System\\ado\\msado25.tlb" no_namespace rename("EOF","ENDOFRS")
int main()
{
::CoInitialize(0);
_ConnectionPtr pConn;
pConn.CreateInstance(__uuidof(Connection));//创建连接对象
pConn->ConnectionString = "Provider=SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=考试系统;Data Source=127.0.0.1";//设置连接字符串
pConn ->ConnectionTimeout = 5;//设置连接的超时时间,可选
pConn ->CursorLocation = adUseServer;//设置光标的位置,可选
pConn ->Open("","","",-1);
_variant_t vt;
//得到一个记录集
_RecordsetPtr rs = pConn->Execute("select * from 考生信息",&vt,adCmdText);
//判定记录集是否到达末尾
while (!rs->ENDOFRS)
{
//得到记录的各个列的数据
_variant_t name= rs->Fields->GetItem("姓名")->Value;
char szname[51];
if (name.vt == VT_NULL)
{
strcpy(szname,"NULL");
}
else
{
//如何进行宽字符到ASCII字符的转换
::WideCharToMultiByte(CP_ACP,0,name.bstrVal,-1,szname,sizeof(szname),0,0);
}
printf("%s",szname);
}
pConn->Close();//关闭数据库连接
pConn.Release();//释放数据库连接对象
return 0;
}
在编译的时候没有报错,但是在运行的时候却什么也输出不了,用F10一步步的调试时候发现在
pConn.CreateInstance(__uuidof(Connection));//创建连接对象
这一步的时候pconn的值就是红色的字体,是不是根本就没有连接上对象呢?
请各位大哥指点,谢谢。
最好能有好心的大哥能给个QQ,不甚感激!!!!!
_ConnectionPtr pConn;
pConn.CreateInstance(__uuidof(Connection));//创建连接对象
pConn->ConnectionString = "Provider=SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=考试系统;Data Source=127.0.0.1";//设置连接字符串
pConn ->ConnectionTimeout = 5;//设置连接的超时时间,可选
pConn ->CursorLocation = adUseServer;//设置光标的位置,可选
try
{
pConn ->Open("","","",-1);
}catch(_com_error e)
{
MessageBox(NULL, e.Description(), e.ErrorMessage(), MB_OK);
return 0;
}
pConn.CreateInstance(__uuidof(Connection));
这两句可以写成一句:
_ConnectionPtr pConn(__uuidof(Connection));
然后调试看看是不是连接字串有问题。
导入.DLL文件看看。
http://blog.csdn.net/xianglitian/archive/2010/05/22/5617173.aspx
继续往后单步调试,看后面哪行具体出问题..
我用
pConn->ConnectionString = "Driver={SQL Server};DataBase=db;Server=192.168.0.190;uid=sa;pwd=sa;";//设置连接字符串可以连接成功。
看看错误是什么
...........
192.168.0.190是我自己的SQL服务器IP。
你不会自己根据自己的情况修改啊,
不是开发版吧
试试这个字符串
Provider=SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=考试系统;Data Source=MICROSOF-47A2FF\\SQLEXPRESS;
MICROSOF-47A2FF换成你的计算机名
看看这个吧
http://club.itqun.net/showtopic-68421.html
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pCommand.CreateInstance(__uuidof(Command));sServer="provider = sqloledb;server=192.168.0.1;database=mydata";
sUserName="sa";
sPwd="";
m_pConnection->Open(_bstr_t(sServer),_bstr_t(sUserName),_bstr_t(sPwd),-1);
这段代码在VC下用的,调整下你的连接字符串;但前提要测通自己的SQL SERVER.