c++连接完数据库,向数据库发送信息后,怎样确定信息已经执行完了呢

 我来答
yql1990115
2012-08-07 · TA获得超过304个赞
知道小有建树答主
回答量:159
采纳率:0%
帮助的人:201万
展开全部
BOOL ConnectSQLServer(CString dbsrc, CString dbname, CString user, CString pass, long lOptions = adConnectUnspecified);
/*========================================================================
Name:连接 SQL SERVER 数据库.
-----------------------------------------------------
Params:[dbsrc]:SQL SERVER 服务器名.
[dbname]:默认的数据库名.
[user]:用户名.
[pass]:密码.
==========================================================================*/
BOOL CAdoConnection::ConnectSQLServer(CString dbsrc, CString dbname, CString user, CString pass, long lOptions)
{
CString strConnect = _T("Provider=SQLOLEDB.1; Data Source=") + dbsrc +
_T("; Initial Catalog=") + dbname +
_T("; User ID=") + user +
_T("; PWD=") + pass;
return Open(LPCTSTR(strConnect), lOptions);
}

/*========================================================================
Params:
- strSQL:SQL语句, 表名, 存储过程调用或持久 Recordset 文件名.
- CursorType: 可选. CursorTypeEnum 值, 确定打开 Recordset 时应该
使用的游标类型. 可为下列常量之一.
[常量][说明]
-----------------------------------------------
adOpenForwardOnly打开仅向前类型游标.
adOpenKeyset打开键集类型游标.
adOpenDynamic打开动态类型游标.
adOpenStatic打开静态类型游标.
-----------------------------------------------
- LockType: 可选, 确定打开 Recordset 时应该使用的锁定类型(并发)
的 LockTypeEnum 值, 可为下列常量之一.
[常量][说明]
-----------------------------------------------
adLockReadOnly只读 - 不能改变数据.
adLockPessimistic保守式锁定 - 通常通过在编辑时立即锁定数据源的记录.
adLockOptimistic开放式锁定 - 只在调用 Update 方法时才锁定记录.
adLockBatchOptimistic 开放式批更新 - 用于批更新模式(与立即更新模式
相对).
-----------------------------------------------
- lOption可选. 长整型值, 用于指示 strSQL 参数的类型. 可为下
列常量之一.
[常量][说明]
-------------------------------------------------
adCmdText指示strSQL为命令文本, 即普通的SQL语句.
adCmdTable指示ADO生成SQL查询返回以 strSQL 命名的表中的
所有行.
adCmdTableDirect指示所作的更改在strSQL中命名的表中返回所有行.
adCmdStoredProc指示strSQL为存储过程.
adCmdUnknown指示strSQL参数中的命令类型为未知.
adCmdFile指示应从在strSQL中命名的文件中恢复保留(保存的)
Recordset.
adAsyncExecute指示应异步执行strSQL.
adAsyncFetch指示在提取 Initial Fetch Size 属性中指定的初始
数量后, 应该异步提取所有剩余的行. 如果所需的行尚未
提取, 主要的线程将被堵塞直到行重新可用.
adAsyncFetchNonBlocking 指示主要线程在提取期间从未堵塞. 如果所请求
的行尚未提取, 当前行自动移到文件末尾.
==========================================================================*/
BOOL CAdoRecordSet::Open(LPCTSTR strSQL, long lOption, CursorTypeEnum CursorType, LockTypeEnum LockType)
{
ASSERT(m_pConnection != NULL);
ASSERT(m_pRecordset != NULL);
ASSERT(AfxIsValidString(strSQL));
if(_tcscmp(strSQL, _T("")) != 0)
{
m_strSQL = strSQL;
}
if (m_pConnection == NULL || m_pRecordset == NULL)
{
return FALSE;
}
if (m_strSQL.IsEmpty())
{
ASSERT(FALSE);
return FALSE;
}
try
{
if (IsOpen()) Close();
return SUCCEEDED(m_pRecordset->Open(_variant_t(LPCTSTR(m_strSQL)),
_variant_t((IDispatch*)m_pConnection->GetConnection(), true),
CursorType, LockType, lOption));
}
catch (_com_error e)
{
TRACE(_T("Warning: 打开记录集发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
TRACE(_T("%s\r\n"), GetLastError());
return FALSE;
}
}

如果你要确定信息执行完,可以设置为adConnectUnspecified模式,他是阻塞的,等他执行完后才会返回。这样你就可以确定了
ITKid
2012-08-06 · TA获得超过890个赞
知道小有建树答主
回答量:791
采纳率:0%
帮助的人:733万
展开全部
请问你是如何连接数据库的呢。
一般执行sql语句,都是先构建语句再执行,执行那一步有返回值的,成功返回1,这样。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式