我是一个新手,刚开始学习ADO技术,在VC编程的应用中碰到以下问题。将_CommandPtr对象的CommandText设置为 CommandText = " "; 形式的字符串命令可以访问数据库并完成向表中插入"test"字符串的操作,代码如下:void DBtest(CString value)
{
::CoInitialize(NULL);//初始化com环境
p_conn.CreateInstance(__uuidof(Connection));
p_conn->Open(L"Provider=SQLOLEDB.1;Data Source=localhost", L"ID", L"pin", adOpenUnspecified);//连接数据库
p_cmd.CreateInstance(__uuidof(Command));
p_cmd->ActiveConnection = p_conn;
try
{
//问题出在这里//////////////////////////////////////////////////////////////////////
p_cmd->CommandText = "inert into TestDB.dbo.test values('test')"; //插入
p_cmd->Execute(NULL,NULL,NULL);
/////////////////////////////////////////////////////////////////////////////////
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
}
p_conn->Close();
::CoUninitialize();
}但是如果在这个函数中我需要向数据库的表中插入一个变量(比如函数传进来的参数value)就不知道怎么办了。我试验了如下方法都不成功:1. CString str;
str.Format("inert into ServerLog.dbo.ServerLog values('%s')", value);
p_cmd->CommandText = str; //插入
p_cmd->Execute(NULL,NULL,NULL);
//会报错commandtext和str类型不匹配,但是我强制转换类型以后会在运行的时候出错2. p_cmd->CommandText = "inert into TestDB.dbo.test values('"+ value +"')"; //插入
p_cmd->Execute(NULL,NULL,NULL);
//同样会说类型不匹配记得在VB中使用第二中方法就可以成功的,不知道VC中应该怎样做才能把一个变量的值插入数据库呢?需要用到Recordset对象吗?谢谢大家!
{
::CoInitialize(NULL);//初始化com环境
p_conn.CreateInstance(__uuidof(Connection));
p_conn->Open(L"Provider=SQLOLEDB.1;Data Source=localhost", L"ID", L"pin", adOpenUnspecified);//连接数据库
p_cmd.CreateInstance(__uuidof(Command));
p_cmd->ActiveConnection = p_conn;
try
{
//问题出在这里//////////////////////////////////////////////////////////////////////
p_cmd->CommandText = "inert into TestDB.dbo.test values('test')"; //插入
p_cmd->Execute(NULL,NULL,NULL);
/////////////////////////////////////////////////////////////////////////////////
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
}
p_conn->Close();
::CoUninitialize();
}但是如果在这个函数中我需要向数据库的表中插入一个变量(比如函数传进来的参数value)就不知道怎么办了。我试验了如下方法都不成功:1. CString str;
str.Format("inert into ServerLog.dbo.ServerLog values('%s')", value);
p_cmd->CommandText = str; //插入
p_cmd->Execute(NULL,NULL,NULL);
//会报错commandtext和str类型不匹配,但是我强制转换类型以后会在运行的时候出错2. p_cmd->CommandText = "inert into TestDB.dbo.test values('"+ value +"')"; //插入
p_cmd->Execute(NULL,NULL,NULL);
//同样会说类型不匹配记得在VB中使用第二中方法就可以成功的,不知道VC中应该怎样做才能把一个变量的值插入数据库呢?需要用到Recordset对象吗?谢谢大家!
解决方案 »
- HEAP_NO_SERIALIZE性能更高吗? 有什么风险?
- 想用 dos command 合并两个bin文件, 格式是什么?
- 求助:如何多次调用OnLButtonDown?
- 急!!!SkinMagic皮肤与 重载的CStatic问题
- 新鲜出炉!!! 2004上海程序员生存现状调查!!! 答者有分!!! (续帖1)
- 面向对象的C++软件设计出国与就业指导班
- VC6 Console App初级问题请教
- 关于 VC C++ 异常你知道什么?
- 读取CAD的DXF文件中的SPLINE 样条曲线数据 求绘制此曲线的算法与实现
- 一点想法和求教用DAO访问ACCESS数据库遇到的一点问题请指教!
- 高分求解:如何判断一个椭圆是否包含另一个椭圆的问题??
- DLL连接错误
p_cmd->Execute(NULL,NULL,NULL);