// 查表中所有记录(即所有的配置信息)已测试(20-2-2016) int system_db_queue_configure_system_table( thost_system_set* p_config ) { char **db_result = NULL; int nrow, ncolumn, i = 0, ret = -1; uint8_t flag[sizeof(thost_system_set)] = {0}; if( p_config == NULL ) return -1; INIT_ZERO( gsql, SQL_STRING_LEN ); sprintf( gsql, "select* from %s;", SYS_DB_SYSTEM_SET_TABLE ); db_get_table( gsystem_db, gsql, strlen(gsql), &db_result, &nrow, &ncolumn ); if( db_result != NULL ) { if( nrow != 0 && ncolumn != 0 ) { #ifdef __SYSTEM_DB_DEBUG__ system_db_table_result_print( nrow, ncolumn, db_result ); #endif for( i = 0; i < sizeof(thost_system_set); i++ ) { flag[i] = atoi( db_result[ncolumn+i]); } memcpy( p_config, flag, sizeof(thost_system_set)); ret = 0; } } return ret; }
void read_custom_from_db(void) { gint n, page, rows; int len; unsigned char *data; num_custom_brackets = 0; // find out the blob keys if ((rows = db_get_table("SELECT \"key\" FROM blobs")) > 0) { for (n = 0; n < rows; n++) { guint a = atoi(db_get_data(n, "key")); if ((a & 0x1f) == 0 && num_custom_brackets < NUM_CUSTOM_BRACKETS) hash_values[num_custom_brackets++] = a; } } if (rows >= 0) db_close_table(); LOG("%d custom brackets", num_custom_brackets); for (n = 0; n < num_custom_brackets; n++) { unsigned char *blob = NULL; db_read_blob(hash_values[n], &blob, &len); if (blob) { custom_brackets[n] = g_malloc0(sizeof(struct custom_data)); decode_custom_data(blob, len, custom_brackets[n]); free(blob); } if (custom_brackets[n] == NULL) { num_custom_brackets = n; g_print("ERROR: cannot read blob %d\n", n); break; } for (page = 1; page <= 10; page++) { db_read_blob(hash_values[n] | page, &data, &len); if (data == NULL) { if (page == 1) { g_print("ERROR: Cannot read svg data from db\n"); } break; } add_custom_svg((gchar *)data, len, hash_values[n], page); #if 0 gchar buf[32]; sprintf(buf, "%x.svg", (n << 8) | page); if (g_file_set_contents(buf, (gchar *)data, len, NULL)) g_print("g_file_set_contents %s OK len=%d\n", buf, len); else g_print("g_file_set_contents %s NOK len=%d\n", buf, len); #endif } } }
void test_db(void) { DB *mydb; DBResults *results; char *errormsg; mydb = db_open("test.db"); results = db_get_table(mydb, "select * from memos;", &errormsg); assert_equal_str(db_results_table_lookup(results, 0, 0), "Hello"); assert_equal_str(db_results_table_lookup(results, 0, 1), "World"); assert_equal_str(db_results_table_lookup(results, 1, 0), "Yes"); assert_equal_str(db_results_table_lookup(results, 1, 1), "No"); assert_equal_str(db_results_column_name(results, 0), "subject"); assert_equal_str(db_results_column_name(results, 1), "body"); db_results_free(results); db_close(mydb); }