VC++数据库(ADO)
我是个新手,刚学VC数据库(ADO),请问前辈们如何删除SQL数据库中的数据,删除一行,有相应的程序参考一下,更好了,我自己尝试了一些。在捕捉异常时总是出错。请大家帮帮忙...
我是个新手,刚学VC数据库(ADO),请问前辈们如何删除SQL数据库中的数据,删除一行,有相应的程序参考一下,更好了,我自己尝试了一些。在捕捉异常时总是出错。请大家帮帮忙。。。
展开
1个回答
展开全部
把下面两个函数作为全局函数定义在工程中 /* 执行一条Sql更新语句,这个函数使用了数据库的事务特性,其主要目的是为了增加更新数据 库的安全性。在更新数据的过程中如果发生异常则对数据库的更新操作可能没有全部完成,这 样会导致数据的丢失。该函数在处理过程中使用C++提供的异常处理机制捕获异常,捕获异常 后回滚事务。这样就可以保证错误的数据不会被带到数据库中去。 这里不能执行Sql查询。更新所针对的数据库由全局变量strDbFullName指出。*/ inline void ExecuteSql( CString strSql ) { if( g_Db.IsOpen() ) // g_Db是一个全局CDaoDatabase对象 g_Db.Close(); g_Db.Open( theApp.m_DbFullName ); // 打开strDbFullName指定的数据库 try{ if( g_Db.CanTransact() ) // 如果数据库支持事务 g_Db.m_pWorkspace->BeginTrans(); // 开始一个事务 g_Db.Execute( strSql ); if( g_Db.CanTransact() ) // 如果数据库支持事务 g_Db.m_pWorkspace->CommitTrans(); // 提交事务 }catch( CException* e ){ // 发生异常,可能是数据库异常,也可能是 // 其它异常,最有可能的是内存异常。 e->ReportError(); // 报告异常信息 if( g_Db.CanTransact() ) // 如果数据库支持事务 g_Db.m_pWorkspace->Rollback(); // 回滚事务 throw; // 再抛出异常。可能这个函数的调用者也要处理异常,所以有必要再一次抛 // 该异常。 } } // 判断表是否存在 inline BOOL IsExistentTable( CString TableName ) { BOOL bRet = TRUE; CDaoTableDefInfo TableInfo; if( TableName.IsEmpty() ) return FALSE; if( ! g_Db.IsOpen() ) g_Db.Open( theApp.m_DbFullName ); try { g_Db.GetTableDefInfo( TableName, TableInfo ); } catch( CDaoException* e ) { // 如果出现的异常编号为3265,即没有找到指定的表,说明表不存在。 if( e->m_pErrorInfo->m_lErrorCode == 3265 ) bRet = FALSE; } return bRet; } 然后组织一条SQL交给ExecuteSql函数执行。
求采纳
求采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询