勇芳软件工作室.汉化:  SQLite3 API Functions > Database Connection >

sqlite3_errmsg

Previous pageReturn to chapter overviewNext page

描述

 

返回描述错误的英文文本,如UTF-8。

 

C / C ++语法

 

const char *sqlite3_errmsg(sqlite3*);

 

PB语法

 

FUNCTION sqlite3_errmsg ( _

BYVAL hDbc AS DWORD _

) AS DWORD

 

参数

 

pDb

 

[in]数据库连接句柄。必须是从sqlite3_opensqlite3_open16sqlite3_open_v2获取的NULL指针或sqlite3对象指针。

 

返回值

 

指向UTF-8字符串的指针,用于描述英语中的错误。

 

备注

 

用于保存错误消息字符串的内存在内部进行管理。应用程序不需要担心释放结果。但是,错误字符串可能会被其他SQLite函数的后续调用覆盖或解除分配。

 

当使用串行线程模式时,可能是在第一个错误的时间和对这些函数的调用之间的另一个线程上发生第二个错误。发生这种情况时,会报告第二个错误,因为这些功能总是报告最近的结果。为了避免这种情况,在所有调用这里列出的函数之后,每个线程可以在开始使用D之前调用sqlite3_mutex_enter(sqlite3_db_mutex(D))并调用sqlite3_mutex_leave(sqlite3_db_mutex(D))来获得数据库连接D的独占使用。已经完成

 

如果一个函数与SQLITE_MISUSE失败,那意味着应用程序调用的函数不正确。在这种情况下,错误代码和消息可能被设置或可能不被设置。

 

C ++实现代码

 

/*

** Return UTF-8 encoded English language explanation of the most recent

** error.

*/

SQLITE_API const char *sqlite3_errmsg(sqlite3 *db){

const char *z;

if( !db ){

  return sqlite3ErrStr(SQLITE_NOMEM);

}

if( !sqlite3SafetyCheckSickOrOk(db) ){

  return sqlite3ErrStr(SQLITE_MISUSE_BKPT);

}

sqlite3_mutex_enter(db->mutex);

if( db->mallocFailed ){

  z = sqlite3ErrStr(SQLITE_NOMEM);

}else{

  z = (char*)sqlite3_value_text(db->pErr);

  assert( !db->mallocFailed );

  if( z==0 ){

    z = sqlite3ErrStr(db->errCode);

  }

}

sqlite3_mutex_leave(db->mutex);

return z;

}