C++ 访问新数据库时应用程序崩溃
我的应用程序在从数据库读取/写入数据时崩溃。我在c:上有一个数据库,我用不同的名称复制粘贴和重命名。以下流程是我用于复制的流程…如果您有任何建议或解决方案,请指导我C++ 访问新数据库时应用程序崩溃,c++,symbian,C++,Symbian,我的应用程序在从数据库读取/写入数据时崩溃。我在c:上有一个数据库,我用不同的名称复制粘贴和重命名。以下流程是我用于复制的流程…如果您有任何建议或解决方案,请指导我 RFs fs; fs.Connect(); CFileMan* fileMan=CFileMan::NewL(fs); CleanupStack::PushL(fileMan); TInt err=fileMan->Copy(anOld,aNew); CleanupStack::PopAndDestroy(fileMan
RFs fs;
fs.Connect();
CFileMan* fileMan=CFileMan::NewL(fs);
CleanupStack::PushL(fileMan);
TInt err=fileMan->Copy(anOld,aNew);
CleanupStack::PopAndDestroy(fileMan);
fs.Close();
if(err==KErrNone)
return ETrue;
else
return EFalse;
当我试图从数据库中插入或获取任何数据时,它会在下面一行崩溃
User::LeaveIfError( iDatabase.Execute( strSQL ) );
数据库创建:
开放数据库:
User::LeaveIfError()
在iDatabase.Execute()返回错误代码时引发异常
您可以在以下位置找到最常见的Symbian错误代码:
如果崩溃发生在RDbDatabase::Execute()
实际运行之前,我们需要查看更多代码,以了解iDatabase
处于不良状态的原因。User::LeaveIfError()
在iDatabase.Execute()
返回错误代码时引发异常
您可以在以下位置找到最常见的Symbian错误代码:
如果崩溃发生在RDbDatabase::Execute()
实际运行之前,我们需要查看更多代码,以了解iDatabase
处于不良状态的原因。您需要解释“崩溃”的含义-异常/离开?恐慌?如果是,留下什么代码,或者什么类别和编号
如果它在这里“崩溃”
您可能需要检查返回值,即
TInt error = iDatabase.Execute( strSQL );
//Now log/display the error
User::LeaveIfError(error);
还有几点需要注意:
- 如果在对象上使用
cleanupclosepush()
,则不需要同时调用Close()
和CleanupStack::popandestroy()
。后者将为您调用Close()
- 您的
OpenL()
函数混合使用了离开代码和返回代码,这通常被认为是糟糕的风格。此外,在清理堆栈上留下内容的函数通常命名为xxxxLC()
,后面的“C”表示清理项
您需要解释“崩溃”的含义-例外/离开?恐慌?如果是,留下什么代码,或者什么类别和编号
如果它在这里“崩溃”
您可能需要检查返回值,即
TInt error = iDatabase.Execute( strSQL );
//Now log/display the error
User::LeaveIfError(error);
还有几点需要注意:
- 如果在对象上使用
cleanupclosepush()
,则不需要同时调用Close()
和CleanupStack::popandestroy()
。后者将为您调用Close()
- 您的
OpenL()
函数混合使用了离开代码和返回代码,这通常被认为是糟糕的风格。此外,在清理堆栈上留下内容的函数通常命名为xxxxLC()
,后面的“C”表示清理项
请编辑您的帖子,使代码可读。请编辑您的帖子,使代码可读。
User::LeaveIfError( iDatabase.Execute( strSQL ) );
TInt error = iDatabase.Execute( strSQL );
//Now log/display the error
User::LeaveIfError(error);