android sqlite自定义函数,SQLite 用户自定义函数举例

#include

#include

#include

#include

#include

#include

#include

#define SELECT_QUERY"SELECT host_id,geturl(desc) FROM host_table;

void host2url_func( sqlite3_context * ctx,int argc,sqlite3_value ** argv )

{

if ( argc != 1 ) return;

char * httpurl = NULL;

switch( sqlite3_value_type( argv[ 0 ] ) )

{

case sqlITE_NULL:

{

sqlite3_result_text( ctx,"NULL",4,sqlITE_STATIC );

break;

}

case sqlITE_TEXT:

{

httpurl = ( char * ) malloc( strlen( sqlite3_value_text( argv[0] ) ) + 8 );

if ( httpurl == 0 ) return;

sprintf( httpurl,"http://%s",sqlite3_value_text( argv[ 0 ] ) );

sqlite3_result_text( ctx,httpurl,strlen( httpurl ),sqlITE_TRANSIENT );

free( httpurl );

httpurl = NULL;

break;

}

default:

sqlite3_result_text( ctx,"about:blank",11,sqlITE_STATIC );

}

}

static int callback(void *NotUsed,char **argv,char **azColName)

{

int i;

for(i=0; i

printf("%s = %s/n",azColName[i],argv[i] ? argv[i] : "NULL");

}

printf("/n");

return 0;

}

int main( int argc,char **argv )

{

sqlite3 *db;

char *zErrMsg = 0;

int rc;

if( argc!=3 )

{

fprintf(stderr,"Usage: %s DATABASE sql-STATEMENT/n",argv[0]);

exit(1);

}

rc = sqlite3_open(argv[1],&db);

if( rc ){

fprintf(stderr,"Can't open database: %s/n",sqlite3_errmsg(db));

sqlite3_close(db);

exit(1);

}

sqlite3_create_function( db,"geturl",1,sqlITE_ANY,NULL,host2url_func,NULL );

rc = sqlite3_exec(db,argv[2],callback,&zErrMsg);

if( rc!=sqlITE_OK ){

fprintf(stderr,"sql error: %s/n",zErrMsg);

}

sqlite3_close(db);

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值