运行时显示的错误
ERROR:[DBNETLIB][connectionOpen(connect()).]SQL Server不存在或拒绝访问。
同时出现下面的输出信息:SQLdatebase.exe 中的 0x7c812afb (kernel32.dll) 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0012f8ec 处的 _com_error。int main()
{
cout << "enter main\n ";
STU student;
::CoInitialize(NULL); // 初始化OLE/COM库环境 ,为访问ADO接口做准备
_RecordsetPtr m_pRecordset( "ADODB.Recordset");
_ConnectionPtr m_pConnection( "ADODB.Connection");
cout << "begin select\n ";
_bstr_t bstrSQL( "select * from stu_info "); //查询语句
char * query_cmd = "DELETE FROM stu_info WHERE sname = '本拉登' ";
cout << "enter try\n ";
try
{
// 创建Connection对象
m_pConnection.CreateInstance( "ADODB.Connection ");
// 设置连接字符串,必须是BSTR型或者_bstr_t类型
_bstr_t strConnect= "Provider=SQLOLEDB; Server=(local); Database=student; uid=zhouxicai; pwd=123456; ";
//若数据库在网络上则Server为形如(192.168.1.5,3340) 用户sa和密码123只是针对我的库
cout << "正在打开学生库\n "; //显示本句后,程序停顿。。后面的语句均没显示,过一会程序自动退出
m_pConnection->Open(strConnect, " ", " ",adModeUnknown);
cout << "打开学生库结束\n ";
if(m_pConnection==NULL) cerr<<"Lind data ERROR!\n ";
cout << "正在创建记录集对象\n ";
// 创建记录集对象
m_pRecordset.CreateInstance(__uuidof(Recordset));
cout << "创建记录集对象结束\n "; 发在数据库版的链接:
http://topic.csdn.net/u/20111101/10/e63b7f0d-eaca-43c9-9884-67e0b4adb4d0.html?31718
ERROR:[DBNETLIB][connectionOpen(connect()).]SQL Server不存在或拒绝访问。
同时出现下面的输出信息:SQLdatebase.exe 中的 0x7c812afb (kernel32.dll) 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0012f8ec 处的 _com_error。int main()
{
cout << "enter main\n ";
STU student;
::CoInitialize(NULL); // 初始化OLE/COM库环境 ,为访问ADO接口做准备
_RecordsetPtr m_pRecordset( "ADODB.Recordset");
_ConnectionPtr m_pConnection( "ADODB.Connection");
cout << "begin select\n ";
_bstr_t bstrSQL( "select * from stu_info "); //查询语句
char * query_cmd = "DELETE FROM stu_info WHERE sname = '本拉登' ";
cout << "enter try\n ";
try
{
// 创建Connection对象
m_pConnection.CreateInstance( "ADODB.Connection ");
// 设置连接字符串,必须是BSTR型或者_bstr_t类型
_bstr_t strConnect= "Provider=SQLOLEDB; Server=(local); Database=student; uid=zhouxicai; pwd=123456; ";
//若数据库在网络上则Server为形如(192.168.1.5,3340) 用户sa和密码123只是针对我的库
cout << "正在打开学生库\n "; //显示本句后,程序停顿。。后面的语句均没显示,过一会程序自动退出
m_pConnection->Open(strConnect, " ", " ",adModeUnknown);
cout << "打开学生库结束\n ";
if(m_pConnection==NULL) cerr<<"Lind data ERROR!\n ";
cout << "正在创建记录集对象\n ";
// 创建记录集对象
m_pRecordset.CreateInstance(__uuidof(Recordset));
cout << "创建记录集对象结束\n "; 发在数据库版的链接:
http://topic.csdn.net/u/20111101/10/e63b7f0d-eaca-43c9-9884-67e0b4adb4d0.html?31718
检查一下你的那个连接字符串是否正确,且数据库允许SQL SERVER 用户登录.
select @@SERVICENAME--实例名
这样,要允许了TCP/IP连接.
试试:server=(local)
运行中显示:ERROR:在对应所需名称或序数的集合中,未找到项目
后面语句的语句执行了,但是数据库里的数据没有打印出来? m_pRecordset->Open(bstrSQL , m_pConnection.GetInterfacePtr(), adOpenDynamic , adLockOptimistic , adCmdText );
cout << "正在准备打印数据\n ";
_variant_t vsnum,vsname,vsage,vssex,vsmajor; //对应库中的snum,sname,sage,ssex,smajor
cout<<"学号 姓名 年龄 姓别 专业 ";
cout<<"\n----------------------------------------------------------------\n ";
//程序一直运行到这里,出现了这样的提示“ERROR:在对应所需名称或序数的集合中,未找到项目
”
while (!m_pRecordset->EndOfFile)
{
vsnum = m_pRecordset->GetCollect(_variant_t((long)0));//这儿给字段编号和字段名都可以
vsname = m_pRecordset->GetCollect( "sname ");
vsage = m_pRecordset->GetCollect( "sage ");
vssex = m_pRecordset->GetCollect( "ssex ");
vsmajor = m_pRecordset->GetCollect( "smajor ");
if (vsnum.vt != VT_NULL && vsname.vt != VT_NULL && vsage.vt != VT_NULL
&& vssex.vt != VT_NULL && vsmajor.vt != VT_NULL)
{
cout.setf(ios::left);
cout << setw(14) << (char*)(_bstr_t)vsnum;
cout << setw(14) << (char*)(_bstr_t)vsname;
cout << setw(8) << vsage.lVal;
cout << setw(8) << (char*)(_bstr_t)vssex;
cout << setw(20) << (char*)(_bstr_t)vsmajor;
cout.unsetf(ios::left);
cout << endl;
}
m_pRecordset->MoveNext(); ///移到下一条记录
}
cout << "\n----------------------------------------------------------------\n ";
cout << "\n请输入你要添加的学生信息\n ";
cout << "学号: ";
cin >> student.snum;
cout << "\n姓名: ";
cin >> student.sname;
cout << "\n年龄: ";
cin >> student.sage;
cout << "\n姓别: ";
cin >> student.ssex;
cout << "\n专业: ";
cin >> student.smajor;
m_pRecordset->MoveFirst(); //移动到第一条记录
m_pRecordset->AddNew(); ///添加新记录
m_pRecordset->PutCollect( "snum ",_variant_t(student.snum));
m_pRecordset->PutCollect( "sname ",_variant_t(student.sname));
m_pRecordset->PutCollect( "sage ",_variant_t(student.sage));
m_pRecordset->PutCollect( "ssex ",_variant_t(student.ssex));
m_pRecordset->PutCollect( "smajor ",_variant_t(student.smajor));
m_pRecordset->Update();
m_pConnection->Execute(query_cmd,NULL,1); //用Execute执行sql语句来删除
m_pRecordset->Close(); // 关闭记录集