[利用ADO访问MS SQL2000]代码出错!感谢高手不舍赐教!

lyxchina 2010-02-06 03:25:39
请大家看看以下代码。为什么我编译的时候,竟然报错?
报错代码:
--------------------报错代码分割线--------------------
--------------------Configuration: sql0206a - Win32 Debug--------------------
Compiling...
a.cpp
f:\myprojects\sql0206a\a.cpp(17) : error C2017: illegal escape sequence
f:\myprojects\sql0206a\a.cpp(17) : error C2017: illegal escape sequence
f:\myprojects\sql0206a\debug\msado15.tlh(409) : warning C4146: unary minus operator applied to unsigned type, result still unsigned
f:\myprojects\sql0206a\a.cpp(19) : error C2146: syntax error : missing ';' before identifier 'rename'
f:\myprojects\sql0206a\a.cpp(19) : error C2501: 'no_namespace' : missing storage-class or type specifiers
f:\myprojects\sql0206a\a.cpp(19) : fatal error C1004: unexpected end of file found
Error executing cl.exe.

sql0206a.exe - 5 error(s), 1 warning(s)
--------------------报错代码分割线--------------------


以下是程序全代码:
--------------------程序全代码分割线--------------------
/*******************************************************************
利用ADO访问MS SQL2000
要求: 【1】输出stu_info表内的每一条记录
【2】添加一条新记录
【3】删除名字为"本拉登"的记录
*/
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \
no_namespace rename("EOF", "EndOfFile")
#include <iostream>
#include <iomanip> //for setw()
using namespace std;
class STU
{
public:
char snum[10]; //学号
char sname[10]; //姓名
char ssex[2]; //姓别
long sage; //年龄
char smajor[20]; //专业
public:
STU(){}
~STU(){}
};

int main()
{
STU student;
::CoInitialize(NULL); // 初始化OLE/COM库环境 ,为访问ADO接口做准备

_RecordsetPtr m_pRecordset("ADODB.Recordset");
_ConnectionPtr m_pConnection("ADODB.Connection");

_bstr_t bstrSQL("select * from stu_info"); //查询语句
char * query_cmd = "DELETE FROM stu_info WHERE sname = '本拉登'";

try
{
// 创建Connection对象
m_pConnection.CreateInstance("ADODB.Connection");
// 设置连接字符串,必须是BSTR型或者_bstr_t类型
_bstr_t strConnect= "Provider=SQLOLEDB;Server=(local);Database=student; uid=sa; pwd=123;";
//若数据库在网络上则Server为形如(192.168.1.5,3340)
//用户sa和密码123只是针对我的库
m_pConnection->Open(strConnect,"","",adModeUnknown);
if(m_pConnection==NULL)
cerr<<"Lind data ERROR!\n";
// 创建记录集对象
m_pRecordset.CreateInstance(__uuidof(Recordset));
// 取得表中的记录
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),
adOpenDynamic,adLockOptimistic,adCmdText);

_variant_t vsnum,vsname,vsage,vssex,vsmajor; //对应库中的snum,sname,sage,ssex,smajor
cout << "学号 姓名 年龄 姓别 专业";
cout << "\n----------------------------------------------------------------\n";

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 amp;amp; vsname.vt != VT_NULL amp;amp; vsage.vt != VT_NULL
amp;amp; vssex.vt != VT_NULL amp;amp; 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(); // 关闭记录集
}

// 捕捉异常
catch(_com_error e)
{
// 显示错误信息
cerr << "\nERROR:" << (char*)e.Description();//抛出异常
}
if(m_pConnection->State)
m_pConnection->Close();

::CoUninitialize();

return 0;
}
--------------------程序全代码分割线--------------------


感谢高手不舍赐教!
...全文
141 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyxchina 2010-02-10
  • 打赏
  • 举报
回复
完美结帖了。

问题找到了:我的知识点还不够。

给和我一样遇到此问题的新手答案:看[孙鑫]VC++教程20课(最后一章),专门讲解VB和VC(C++)连接数据库的。

感谢各位参与回答,我以上的答案是在其他网上找到的,在这里感谢网上无私贡献的人。
jssz103b 2010-02-09
  • 打赏
  • 举报
回复
m_pConnection->Open("Driver={SQL Server};Server=192.168.40.106;Database=Account;User ID=sa;PWD=123456","","",adModeUnknown);
ljz888666555 2010-02-09
  • 打赏
  • 举报
回复
建个UDL文件测试连接。
lyxchina 2010-02-09
  • 打赏
  • 举报
回复
先谢谢各位热心的兄弟。

我试了,没有成功。~~可能我方法不对?哪位兄台能做一个完全的简单C++连接SQL吗?

例如:改了SQL的SA密码和数据库就能连接的那种。

附上简单的连接说明更好。谢谢了~
lyxchina 2010-02-09
  • 打赏
  • 举报
回复
啊!~高手啊。where are you~!!

顶上~~
howema 2010-02-08
  • 打赏
  • 举报
回复

// 初始化—连接数据库
void ADOConn::OnInitADOConn()
{
// 初始化OLE/COM库环境
::CoInitialize(NULL);
CString db = "Database=databasename; uid=sa; pwd=123456;";

try
{
// 创建Connection对象
m_pConnection.CreateInstance("ADODB.Connection");
// 设置连接字符串,必须是BSTR型或者_bstr_t类型
_bstr_t strConnect = "Provider=SQLOLEDB.1; Server=127.0.0.1; " + (_bstr_t)db;
m_pConnection->Open(strConnect,"","",adModeUnknown);
}
// 捕捉异常
catch(_com_error e)
{
// 显示错误信息
AfxMessageBox(e.Description());
}
}
cattycat 2010-02-07
  • 打赏
  • 举报
回复
你这里用的好像是智能指针,我以前用的是MFC的CDataBaseMng类型,如果你是在MFC中的话,有很多可以用的操作数据库的方法。
herman~~ 2010-02-07
  • 打赏
  • 举报
回复
mark
sams_wang 2010-02-07
  • 打赏
  • 举报
回复
LZ可以在网上找一下这个类CAdoConnection,挺好用的,我一直都是用这个来连接SQL SERVER2000、ACCESS,功能挺齐全的
lyxchina 2010-02-07
  • 打赏
  • 举报
回复
感谢您的留言兄弟,既然您会添加ADO组件库。那么您能给一段c++连接SQL数据库的代码吗?
cattycat 2010-02-06
  • 打赏
  • 举报
回复

添加ADO的库是这样的,那个import要写在一行中,感觉你的 \ 可能弄错了,还不如写在同一行。
//添加ADO组件库
#include <comdef.h>
#import "C:\Program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")


另外还有其他的语法错误。后面怎么又很多的amp ?

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧