コード例 #1
0
ファイル: db-count.c プロジェクト: TobyGoodwin/bfilter
void db_count_purge(void) {
    int r;

    r = db_stmt_ready(&purge);
    if (r != SQLITE_OK) db_fatal("prepare / reset", purge.s);

    r = sqlite3_step(purge.x);
    if (r != SQLITE_DONE) db_fatal("step", purge.s);

    db_stmt_finalize(&purge);
}
コード例 #2
0
//default group list
static INT32 _contact_provider_add_default_groups(DatabaseHandle* db_handle)
{


    ContentValues* values=content_values_create();
    INT32  num = 0;
    INT32 i = 0;
    INT32 db_ret=DB_OK;
    DatabaseStatement* stmt = NULL;
    static CHAR* s_contact_group_name[]={"Blacklist","Frequent","Colleague","Classmate","Family","Other"};
    num= sizeof(s_contact_group_name)/sizeof(s_contact_group_name[0]);
    return_val_if_fail(values, DB_ERROR);
    stmt = db_stmt_build_insert_statement(db_handle,CONTACT_ME_GROUP_TABLE_NAME,CONTACT_ME_GROUP_GROUP_COL_NAME,1);
    if (!stmt)
    {
        content_values_destroy(values);
        return DB_ERROR;
    }
    for (i=0;i<num;i++)
    {
        content_values_put_string(values,CONTACT_ME_GROUP_GROUP_COL_NAME,s_contact_group_name[i]);
        db_ret = db_stmt_bind_content_values( stmt,values);
        if (db_ret == DB_OK)
        {
            db_ret=db_stmt_step(stmt);
            if (db_ret!=DB_OK)
            {
                break;
            }
        }

    }
    db_stmt_finalize(stmt);
    content_values_destroy(values);
    return db_ret;

}
コード例 #3
0
static INT32 contact_provider_insert(ContentProvider* thiz,ContentProviderDestination dest,const CHAR* col_list,INT32 col_num, ContentValues* values)
{

    ContactProvider* sub_provider =(ContactProvider*) thiz->priv_data;
    const CHAR* table = NULL;
    ContentValuesItor itor;
    ContentValues *values_me, *values_ext;
    CHAR* values_ret = NULL;
    INT64 ID;
    INT32 db_ret=DB_OK;
    DatabaseStatement* stmt = NULL;
    DatabaseHandle* db_handle = contact_base_provider_obtain_db_handle();
    UINT32 t1 = db_get_ticks();
    UINT32 t2 = 0;
    return_val_if_fail(sub_provider&&db_handle, DB_ERROR);




    switch (dest)
    {
    case CONTACT_PROVIDER_DESTINATION_CONTACTS:
        table = CONTACT_ME_CONTACTS_TABLE_NAME;
        break;
    case CONTACT_PROVIDER_DESTINATION_GROUP:
        table = CONTACT_ME_GROUP_TABLE_NAME;
        break;
    case CONTACT_PROVIDER_DESTINATION_EXTENSION_NUMBER:
        table = CONTACT_EXTENSION_TABLE_NUMBER_NAME;
        break;
    case CONTACT_PROVIDER_DESTINATION_EXTENSION_OTHER:
        table = CONTACT_EXTENSION_TABLE_OTHER_NAME;
        break;
    case CONTACT_PROVIDER_DESTINATION_SIM:
        table = CONTACT_SIM_TABLE_NAME;
        break;
    }
    if (CONTACT_PROVIDER_DESTINATION_CONTACTS==dest)
    {
        INT64 value_group_id,value_main_num_tag;
        WCHAR* str_name=NULL;
        values_me = content_values_create();
        content_values_get_int(values,"group_id",&value_group_id);
        content_values_delete_key(values,"group_id");
        content_values_put_int(values_me,"group_id",value_group_id);
        content_values_get_int(values,"main_num_tag",&value_main_num_tag);
        content_values_delete_key(values,"main_num_tag");
        content_values_put_int(values_me,"main_num_tag",value_main_num_tag);
        content_values_get_string16(values,"name",&str_name);
        content_values_delete_key(values,"name");
        content_values_put_string_16(values_me,"name",str_name);
        db_ret = db_insert(db_handle,table,values_me);
        content_values_destroy(values_me);
        TG_FREE(str_name);
        ID = db_last_insert_rowid(db_handle);
        for (itor=content_values_first(values);itor;itor=content_values_next(values,itor))
        {
            const CHAR* key = content_values_get_key(itor);
            content_values_get_string(values,key,&values_ret);
            values_ext = content_values_create();
            if (0 == strcmp(key,"mobile"))
            {
                content_values_put_int(values_ext,"ID",ID);
                content_values_put_int(values_ext,"tag_id",CONTACT_EXTENSION_TAG_MOBILE);
                content_values_put_string(values_ext,"value",values_ret);
                db_ret |= db_insert(db_handle,CONTACT_EXTENSION_TABLE_NUMBER_NAME,values_ext);
            }
            else if (0 == strcmp(key,"home"))
            {
                content_values_put_int(values_ext,"ID",ID);
                content_values_put_int(values_ext,"tag_id",CONTACT_EXTENSION_TAG_HOME);
                content_values_put_string(values_ext,"value",values_ret);
                db_ret |= db_insert(db_handle,CONTACT_EXTENSION_TABLE_NUMBER_NAME,values_ext);
            }
            else if (0 == strcmp(key,"office"))
            {
                content_values_put_int(values_ext,"ID",ID);
                content_values_put_int(values_ext,"tag_id",CONTACT_EXTENSION_TAG_OFFICE);
                content_values_put_string(values_ext,"value",values_ret);
                db_ret |= db_insert(db_handle,CONTACT_EXTENSION_TABLE_NUMBER_NAME,values_ext);
            }
            else if (0 == strcmp(key,"email"))
            {
                content_values_put_int(values_ext,"ID",ID);
                content_values_put_int(values_ext,"tag_id",CONTACT_EXTENSION_TAG_EMAIL);
                content_values_put_string(values_ext,"value",values_ret);
                db_ret |= db_insert(db_handle,CONTACT_EXTENSION_TABLE_OTHER_NAME,values_ext);
            }
            content_values_destroy(values_ext);
            TG_FREE(values_ret);
        }
        if (DB_OK == db_ret)
        {
            db_ret = (INT32)ID;
        }
        else
        {
            db_ret = -1;
        }
    }
    else
    {
        stmt = db_stmt_build_insert_statement(db_handle,table,col_list,col_num);
        return_val_if_fail(stmt, DB_ERROR);
        db_ret= db_stmt_bind_content_values( stmt,(ContentValues*)values);
        if (db_ret==DB_OK)
            db_ret=db_stmt_step(stmt);
        db_stmt_finalize(stmt);
    }
    contact_base_provider_release_db_handle();

    t2 = db_get_ticks();
    DB_PRINTF("contact_provider_insert use %d\n",t2-t1);


    return db_ret;

}
コード例 #4
0
ファイル: db-count.c プロジェクト: TobyGoodwin/bfilter
void db_count_done(void) {
    db_stmt_finalize(&exists);
    db_stmt_finalize(&insert);
    db_stmt_finalize(&update);
}