详细描述
QSqlError 类提供了SQL数据库错误信息。
一个 QSqlError 对象可以提供特定数据库的错误信息,包括driverText() 和 databaseText() 消息(或是将两者结合的 text() 消息),还有nativeErrorCode() 和type().。
相关成员
enum QSqlError::ErrorType
该枚举描述了错误发生的上下文(环境),例如:一个连接错误,一个(SQL)语句错误,等等。
枚举常量 值 描述
QSqlError::NoError 0 没有错误发生
QSqlError::ConnectionError 1 (数据库)连接错误
QSqlError::StatementError 2 SQL语句语法错误
QSqlError::TransactionError 3 事务失败错误
QSqlError::UnknownError 4 未知错误
相关API
QSqlError::QSqlError(const QString &driverText = QString(), const QString &databaseText = QString(), ErrorType type = NoError, const QString &code = QString())
构造一个QSqlError对象包含驱动错误文本driverText, 特定数据库错误文本databaseText,错误类型type和错误码code。
QSqlError::QSqlError(const QSqlError &other)
创建一个other的副本。
QSqlError::~QSqlError()
销毁对象并释放所有已分配的资源。
QString QSqlError::databaseText() const
返回数据库报告的错误文本。这可能包含特定于数据库的描述;它可能是空的。
QString QSqlError::driverText() const
返回驱动报告的错误文本。这可能包含特定于数据库的描述;它可能是空的。
bool QSqlError::isValid() const
如果设置了错误返回true,否则返回false.
例子:
QSqlQueryModel model;
model.setQuery("select * from myTable");
if (model.lastError().isValid())
qDebug() << model.lastError();
QString QSqlError::nativeErrorCode() const
返回特定于数据库的错误码,如果不能确定则返回空字符串。
QString QSqlError::text() const
这是一个方便的函数,它返回databaseText()和driverText()连接成的一个字符串。
ErrorType QSqlError::type() const
返回错误类型,如果不能确定错误类型则返回-1。
bool QSqlError::operator!=(const QSqlError &other) const
对比other错误对象和这个错误对象,如果不相等返回true。
QSqlError &QSqlError::operator=(const QSqlError &other)
将other错误对象的值赋给这个错误对象。
bool QSqlError::operator==(const QSqlError &other) const
对比other错误对象和这个错误对象,如果相等返回true。
————————————————
实例:
新建数据库函数
void MainWindow::OpenDatabase()
{
db =QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("D:\\qt.db");
db.setPassword("aaabbb");
if (db.open())
{
qDebug()<<"open";
}
else {
qDebug()<<"fail";
}
}
执行sql语句并捕捉异常
void MainWindow::execSql(QString strSql)
{
QSqlQuery query(db);
if (query.exec(strSql))
qDebug()<<tr("Sql");
else
qDebug()<<tr("fsql!");
QSqlError sqlerror= query.lastError();//获得异常类
qDebug()<<sqlerror.nativeErrorCode();//打印异常编码
qDebug()<<sqlerror.text();//打印异常文本
}