C++通过ADO操作数据库

本文探讨了一个使用ADO连接SQL Server数据库并执行CRUD操作的C++程序。该程序旨在创建表、插入数据、读取数据并最终删除表,但在运行过程中遇到了授权问题,输出了“无效授权说明”的错误信息。
这个是我从网上看到的例子通过自己修改写的,但还有一个问题,就是运行时没有得到想要的结果,这个程序基本路是创建一个表,插入两个数据,输出数据,然后是删除表,
#include<iostream>
#include<cstring>
//#pragma warning(disable:4146)

#import"D:\Program Files\Common Files\System\ado\msado15.dll"   rename("EOF","ADOEOF")

std::string outputashex(unsigned long l)
{
	char buffer[1024];
	::itoa (l,buffer,16);
	return buffer;



};
void main()
{
	HRESULT hr;
	CoInitialize(NULL);
	try
	{
		ADODB::_ConnectionPtr connection;
		hr=connection.CreateInstance(_uuidof(ADODB::Connection));
		if(FAILED(hr))
		{ 
			throw _com_error(hr);

		
		}
		ADODB::_RecordsetPtr recordset;
		hr=recordset.CreateInstance(_uuidof(ADODB::Recordset));
		if(FAILED(hr))
		{
		throw _com_error(hr);

		}
		connection->CursorLocation=ADODB::adUseClient;
		connection->Open(L"Provider=sqloledb;Data Source=local\SQL_RBAC;"
			L"Initial Catalog=brother;User Id= ;PassWord= ;",L"",L"",ADODB::adConnectUnspecified);
		recordset->Open("create table mytable(value nvarchar(20))",connection.GetInterfacePtr(),
			ADODB::adOpenForwardOnly,ADODB::adLockReadOnly,ADODB::adCmdText);
		recordset->Open("insert into mytable values ('hello')",connection.GetInterfacePtr(),
			ADODB::adOpenForwardOnly,ADODB::adLockReadOnly,ADODB::adCmdText);
		recordset->Open("insert into mytable values ('goodbye')",connection.GetInterfacePtr(),
			ADODB::adOpenForwardOnly,ADODB::adLockReadOnly,ADODB::adCmdText);
		recordset->Open("select * from mytable",connection.GetInterfacePtr(),ADODB::adOpenForwardOnly,ADODB::adLockReadOnly,ADODB::adCmdText);
		while(!recordset->ADOEOF)
		{
			_variant_t var;
			var=recordset->Fields->GetItem(L"value")->GetValue();
			std::cout<<static_cast<char*>(_bstr_t(var.bstrVal))<<std::endl ;
			recordset->MoveNext();
		};
		recordset->Close();
		//recordset->Open("drop table mytable",connection.GetInterfacePtr(),ADODB::adOpenForwardOnly,ADODB::adLockReadOnly,ADODB::adCmdText);
	}
		catch(_com_error e)
		{
			std::cerr<<":"<<static_cast<char*>(e.Description());


		
		
		}
		catch(...)
		{
		std::cerr <<"Unhandled Exception";
		
		};
		system("pause");

	

这个程序运行后并没有创建表,而是输出“:无效授权说明”,我找个很久没有找出错误所在,所以贴出来,请各位老师指点下!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值