コード例 #1
0
/* Calls step_query for query execution. 
 * Collects and acts on the result status of a query 
 * execution.
 */
int file_prep_exec(FILE *f, sqlite3_stmt *stmt, const char *response_type) {
  int result = 0;
  result = step_query(f, stmt, response_type);
  switch (result) {
  case SQLITE_DONE:
#ifdef PICO_QL_DEBUG
    if (!strcmp(response_type, "text/html"))
      swill_fprintf(f, "<b>DONE<br></b>");
    else
      swill_fprintf(f, "DONE\n");
#endif
    break;
  case SQLITE_OK:
#ifdef PICO_QL_DEBUG
    if (!strcmp(response_type, "text/html"))
      swill_fprintf(f, "<b>OK<br></b>");
    else
      swill_fprintf(f, "OK\n");
#endif
    break;
  case SQLITE_ERROR:
  if (!strcmp(response_type, "text/html"))
    swill_fprintf(f, "<b>SQL error or missing database.\n</b>");
  else
    swill_fprintf(f, "SQL error or missing database.\n");
    break;
  case SQLITE_MISUSE:
  if (!strcmp(response_type, "text/html"))
    swill_fprintf(f, "<b>Library used incorrectly.<br></b>");
  else
    swill_fprintf(f, "Library used incorrectly.\n");
    break;
  }
  return result;
}
コード例 #2
0
ファイル: db_upgrade.c プロジェクト: UnoffLandz/unoff-landz
void set_db_version(int db_version) {

    /** RESULT  : sets the database version entry in the database

        RETURNS : void

        PURPOSE : to enable database upgrade procedures and error checking

        NOTES   :
    **/

    //check database is open and table exists
    check_db_open(GET_CALL_INFO);
    check_table_exists("GAME_DATA_TABLE", GET_CALL_INFO);

    char *sql="UPDATE GAME_DATA_TABLE SET DB_VERSION = ?";

    sqlite3_stmt *stmt=NULL;

    prepare_query(sql, &stmt, GET_CALL_INFO);

    sqlite3_bind_int(stmt, 1, db_version);

    step_query(sql, &stmt, GET_CALL_INFO);

    destroy_query(sql, &stmt, GET_CALL_INFO);
}
コード例 #3
0
void batch_add_genders(char *file_name){

    /** public function - see header */

    FILE* file;

    if((file=fopen(file_name, "r"))==NULL){

        log_event(EVENT_ERROR, "file [%s] not found", file_name);
        stop_server();
    }

    char line[160]="";
    int line_counter=0;

    log_event(EVENT_INITIALISATION, "\nAdding genders specified in file [%s]", file_name);
    fprintf(stderr, "\nAdding genders specified in file [%s]\n", file_name);

    //check database is open and table exists
    check_db_open(GET_CALL_INFO);
    check_table_exists("GENDER_TABLE", GET_CALL_INFO);

    sqlite3_stmt *stmt;
    char *sErrMsg = 0;

    char *sql="INSERT INTO GENDER_TABLE("  \
        "GENDER_ID," \
        "GENDER_NAME"  \
        ") VALUES(?, ?)";

    prepare_query(sql, &stmt, GET_CALL_INFO);

    int rc=sqlite3_exec(db, "BEGIN TRANSACTION", NULL, NULL, &sErrMsg);
    if(rc!=SQLITE_OK){

        log_event(EVENT_ERROR, "sqlite3_exec failed", GET_CALL_INFO);
        log_text(EVENT_ERROR, "return code [%i] message [%s] sql [%s]", rc, *&sErrMsg, sql);
    }

    while (fgets(line, sizeof(line), file)) {

        line_counter++;

        sscanf(line, "%*s");

        char output[2][MAX_LST_LINE_LEN];
        memset(&output, 0, sizeof(output));
        parse_line(line, output);

        sqlite3_bind_int(stmt, 1, atoi(output[0]));                 //gender id
        sqlite3_bind_text(stmt, 2, output[1], -1, SQLITE_STATIC);   //gender name

        step_query(sql, &stmt, GET_CALL_INFO);

        sqlite3_clear_bindings(stmt);
        sqlite3_reset(stmt);

        fprintf(stderr, "Gender [%i] [%s] added successfully\n", atoi(output[0]), output[1]);
        log_event(EVENT_SESSION, "Added gender [%i] [%s] to GENDER_TABLE", atoi(output[0]), output[1]);
    }

    rc=sqlite3_exec(db, "END TRANSACTION", NULL, NULL, &sErrMsg);
    if (rc!=SQLITE_OK) {

        log_event(EVENT_ERROR, "sqlite3_exec failed", GET_CALL_INFO);
        log_text(EVENT_ERROR, "return code [%i] message [%s] sql [%s]", rc, *sErrMsg, sql);
    }

    destroy_query(sql, &stmt, GET_CALL_INFO);

    fclose(file);

    //load gender data to memory so this can be used by other functions
    load_db_genders();

    //mark data as loaded
    genders.data_loaded=true;
}