描述
sqlite3_db_config功能用于对数据库连接进行配置更改。该界面类似于sqlite3_config,只是更改适用于单个数据库连接(在第一个参数中指定)。
C / C ++语法
int sqlite3_db_config(sqlite3*, int op, ...); |
PB语法
FUNCTION sqlite3_config ( _ BYVAL hDbc AS DWORD, _ BYVAL op AS LONG, _ OPTIONAL BYREF ANY, BYREF ANY, BYREF ANY, BYREF ANY, _ BYREF ANY, BYREF ANY, BYREF ANY, BYREF ANY, BYREF ANY, _ BYREF ANY, BYREF ANY, BYREF ANY, BYREF ANY, BYREF ANY, _ BYREF ANY, BYREF ANY _ ) AS LONG |
参数
pDb
[in]数据库连接句柄。必须是从sqlite3_open,sqlite3_open16或sqlite3_open_v2获取的NULL指针或sqlite3对象指针,而不是先前关闭。使用NULL指针参数调用sqlite3_close是无害的操作。
op
[in]配置动词 - 表示正在配置数据库连接的哪个方面的整数代码。后续参数因配置动词而异。
返回值
当且仅当该呼叫被认为是成功时,才会呼叫sqlite3_db_config返回SQLITE_OK。
C ++实现代码
/*
** Configuration settings for an individual database connection
*/
SQLITE_API int sqlite3_db_config(sqlite3 *db, int op, ...){
va_list ap;
int rc;
va_start(ap, op);
switch( op ){
case SQLITE_DBCONFIG_LOOKASIDE: {
void *pBuf = va_arg(ap, void*); /* IMP: R-26835-10964 */
int sz = va_arg(ap, int); /* IMP: R-47871-25994 */
int cnt = va_arg(ap, int); /* IMP: R-04460-53386 */
rc = setupLookaside(db, pBuf, sz, cnt);
break;
}
default: {
static const struct {
int op; /* The opcode */
u32 mask; /* Mask of the bit in sqlite3.flags to set/clear */
} aFlagOp[] = {
{ SQLITE_DBCONFIG_ENABLE_FKEY, SQLITE_ForeignKeys },
{ SQLITE_DBCONFIG_ENABLE_TRIGGER, SQLITE_EnableTrigger },
};
unsigned int i;
rc = SQLITE_ERROR; /* IMP: R-42790-23372 */
for(i=0; i<ArraySize(aFlagOp); i++){
if( aFlagOp[i].op==op ){
int onoff = va_arg(ap, int);
int *pRes = va_arg(ap, int*);
int oldFlags = db->flags;
if( onoff>0 ){
db->flags |= aFlagOp[i].mask;
}else if( onoff==0 ){
db->flags &= ~aFlagOp[i].mask;
}
if( oldFlags!=db->flags ){
sqlite3ExpirePreparedStatements(db);
}
if( pRes ){
*pRes = (db->flags & aFlagOp[i].mask)!=0;
}
rc = SQLITE_OK;
break;
}
}
break;
}
}
va_end(ap);
return rc;
}