这篇教程C++ sqlite3_close函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中sqlite3_close函数的典型用法代码示例。如果您正苦于以下问题:C++ sqlite3_close函数的具体用法?C++ sqlite3_close怎么用?C++ sqlite3_close使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了sqlite3_close函数的27个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: WinMain//----[ WinMain ]------------------------------------------------------------int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int) { sqlite3* db; sqlite3_open(":memory:", &db); char* errmsg; // create the data structure char sql[2048]; sqlite3_snprintf(2048, sql, "CREATE VIRTUAL TABLE entity_tree USING rtree(id, min_x, max_x, min_z, max_z)"); if (SQLITE_OK != sqlite3_exec(db, sql, NULL, NULL, &errmsg)) { DEBUG_INFO("%s", errmsg); return 0; } sqlite3_snprintf(2048, sql, "CREATE TABLE entities (id INTEGER PRIMARY KEY, x REAL, z REAL, entity_ptr BLOB)"); if (SQLITE_OK != sqlite3_exec(db, sql, NULL, NULL, &errmsg)) { DEBUG_INFO("%s", errmsg); return 0; } sqlite3_create_function(db, "collision", 2, SQLITE_ANY, NULL, // user data ptr collisionFunctionForSqlite, NULL, NULL); // not an aggregating function static const size_t ENTITIES = 1024; static const size_t SIZE = 4096; enum Statement { STATEMENT_UPDATE_BOUNDARIES, STATEMENT_INSERT_ENTITY, STATEMENT_UPDATE_ENTITY, STATEMENT_QUERY_OVERLAP, STATEMENT_QUERY_COLLISION, NUMBER_OF_STATEMENTS, }; struct Entity { int id; Number x, z; Number collision_rad_sq; Number visible_rad_sq; Number radius; }; const char* statements_text[NUMBER_OF_STATEMENTS] = { "REPLACE INTO entity_tree VALUES (?,?,?,?,?)", "INSERT INTO entities VALUES (?,?,?,?)", // id, x, z, entity_ptr (blob) "UPDATE entities SET x=?, z=? WHERE id=?", // x, z, id "SELECT id FROM entity_tree WHERE id>? AND max_x>=? AND min_x<=? AND max_z>=? AND min_z<=?", // min/max x then min/max z // searcher's id, min x, max x, min z, max z "SELECT entities.id, entity_ptr FROM entities,entity_tree WHERE entities.id=entity_tree.id AND entity_tree.id>? AND collision(entities.x, entities.z) AND max_x>=? AND min_x<=? AND max_z>=? AND min_z<=?" }; sqlite3_stmt* statements[NUMBER_OF_STATEMENTS]; for (int i = 0; i <NUMBER_OF_STATEMENTS; ++i) { int rc; if (SQLITE_OK != (rc=sqlite3_prepare_v2(db, statements_text[i], strlen(statements_text[i]), &statements[i], NULL))) { DEBUG_INFO("%i - %s", i, sqlite3_errmsg(db)); sqlite3_close(db); return false; } } Entity* entities = new Entity[ENTITIES]; for (int i = 0; i < ENTITIES; ++i) { entities[i].id = i; entities[i].x = randf() * SIZE; entities[i].z = randf() * SIZE; float f = 0.5 + randf() * 1.0; entities[i].radius = f; entities[i].collision_rad_sq = f*f; f = 1.5f*randf() + f; entities[i].visible_rad_sq = f*f; sqlite3_bind_double(statements[STATEMENT_INSERT_ENTITY], 1, i); sqlite3_bind_double(statements[STATEMENT_INSERT_ENTITY], 2, entities[i].x.toFloat()); sqlite3_bind_double(statements[STATEMENT_INSERT_ENTITY], 3, entities[i].z.toFloat()); sqlite3_bind_blob(statements[STATEMENT_INSERT_ENTITY], 4, &entities[i], 4, SQLITE_TRANSIENT); sqlite3_step(statements[STATEMENT_INSERT_ENTITY]); sqlite3_reset(statements[STATEMENT_INSERT_ENTITY]); sqlite3_bind_int(statements[STATEMENT_UPDATE_BOUNDARIES], 1, entities[i].id); sqlite3_bind_double(statements[STATEMENT_UPDATE_BOUNDARIES], 2, (entities[i].x - entities[i].radius).toFloat()); sqlite3_bind_double(statements[STATEMENT_UPDATE_BOUNDARIES], 3, (entities[i].x + entities[i].radius).toFloat()); sqlite3_bind_double(statements[STATEMENT_UPDATE_BOUNDARIES], 4, (entities[i].z - entities[i].radius).toFloat()); sqlite3_bind_double(statements[STATEMENT_UPDATE_BOUNDARIES], 5, (entities[i].z + entities[i].radius).toFloat()); sqlite3_step(statements[STATEMENT_UPDATE_BOUNDARIES]);//.........这里部分代码省略.........
开发者ID:karlgluck,项目名称:Evidyon,代码行数:101,
示例2: setEllipsoidbool QgsDistanceArea::setEllipsoid( const QString& ellipsoid ){ QString radius, parameter2; // // SQLITE3 stuff - get parameters for selected ellipsoid // sqlite3 *myDatabase; const char *myTail; sqlite3_stmt *myPreparedStatement; int myResult; // Shortcut if ellipsoid is none. if ( ellipsoid == GEO_NONE ) { mEllipsoid = GEO_NONE; return true; } // Check if we have a custom projection, and set from text string. // Format is "PARAMETER:<semi-major axis>:<semi minor axis> // Numbers must be with (optional) decimal point and no other separators (C locale) // Distances in meters. Flattening is calculated. if ( ellipsoid.startsWith( "PARAMETER" ) ) { QStringList paramList = ellipsoid.split( ':' ); bool semiMajorOk, semiMinorOk; double semiMajor = paramList[1].toDouble( & semiMajorOk ); double semiMinor = paramList[2].toDouble( & semiMinorOk ); if ( semiMajorOk && semiMinorOk ) { return setEllipsoid( semiMajor, semiMinor ); } else { return false; } } // Continue with PROJ.4 list of ellipsoids. //check the db is available myResult = sqlite3_open_v2( QgsApplication::srsDbFilePath().toUtf8().data(), &myDatabase, SQLITE_OPEN_READONLY, nullptr ); if ( myResult ) { QgsMessageLog::logMessage( QObject::tr( "Can't open database: %1" ).arg( sqlite3_errmsg( myDatabase ) ) ); // XXX This will likely never happen since on open, sqlite creates the // database if it does not exist. return false; } // Set up the query to retrieve the projection information needed to populate the ELLIPSOID list QString mySql = "select radius, parameter2 from tbl_ellipsoid where acronym='" + ellipsoid + '/''; myResult = sqlite3_prepare( myDatabase, mySql.toUtf8(), mySql.toUtf8().length(), &myPreparedStatement, &myTail ); // XXX Need to free memory from the error msg if one is set if ( myResult == SQLITE_OK ) { if ( sqlite3_step( myPreparedStatement ) == SQLITE_ROW ) { radius = QString( reinterpret_cast< const char * >( sqlite3_column_text( myPreparedStatement, 0 ) ) ); parameter2 = QString( reinterpret_cast< const char * >( sqlite3_column_text( myPreparedStatement, 1 ) ) ); } } // close the sqlite3 statement sqlite3_finalize( myPreparedStatement ); sqlite3_close( myDatabase ); // row for this ellipsoid wasn't found? if ( radius.isEmpty() || parameter2.isEmpty() ) { QgsDebugMsg( QString( "setEllipsoid: no row in tbl_ellipsoid for acronym '%1'" ).arg( ellipsoid ) ); return false; } // get major semiaxis if ( radius.left( 2 ) == "a=" ) mSemiMajor = radius.mid( 2 ).toDouble(); else { QgsDebugMsg( QString( "setEllipsoid: wrong format of radius field: '%1'" ).arg( radius ) ); return false; } // get second parameter // one of values 'b' or 'f' is in field parameter2 // second one must be computed using formula: invf = a/(a-b) if ( parameter2.left( 2 ) == "b=" ) { mSemiMinor = parameter2.mid( 2 ).toDouble(); mInvFlattening = mSemiMajor / ( mSemiMajor - mSemiMinor ); } else if ( parameter2.left( 3 ) == "rf=" ) { mInvFlattening = parameter2.mid( 3 ).toDouble(); mSemiMinor = mSemiMajor - ( mSemiMajor / mInvFlattening ); } else { QgsDebugMsg( QString( "setEllipsoid: wrong format of parameter2 field: '%1'" ).arg( parameter2 ) ); return false; }//.........这里部分代码省略.........
开发者ID:ar-jan,项目名称:QGIS,代码行数:101,
示例3: get_message_id/* gets the message_id, screen_name and the message */double get_message_id(int stat,char *sno,char **ptr_screen_name,char **ptr_message) { char *db_name = ".twit_ui_db"; char *statement_t = "select t_id,u_screen_name,t_text from tweets where sno="; char *statement_d = "select d_id,ds_screen_name,d_text from dms where sno="; char *statement_d_sent = "select d_id,dr_screen_name,d_text from dms_sent where sno="; char *final_statement; sqlite3 *db_handle; sqlite3_stmt *temp; double max_id; int sql_errors; char *statement; if(stat == 0) statement = statement_t; else if (stat == 1) statement = statement_d; else if (stat == 2) statement = statement_d_sent; final_statement = malloc(strlen(statement) + 20); sprintf(final_statement,"%s%s;",statement,sno); /* for debugging purposes clear(); printw("%s",final_statement); refresh(); sleep(2); */ if((sql_errors = sqlite3_open(db_name,&db_handle))!= SQLITE_OK) { sqlite3_close(db_handle); sqlite3_finalize(temp); return sql_errors; } if((sql_errors = sqlite3_prepare_v2(db_handle,final_statement,strlen(final_statement),&temp,NULL)) != SQLITE_OK) { sqlite3_close(db_handle); sqlite3_finalize(temp); return sql_errors; } if((sql_errors = sqlite3_step(temp)) != SQLITE_ROW) { sqlite3_close(db_handle); sqlite3_finalize(temp); return sql_errors ; } max_id = sqlite3_column_double(temp,0); sprintf(*ptr_screen_name,"%s",(char *)sqlite3_column_text(temp,1)); sprintf(*ptr_message,"%s",(char *)sqlite3_column_text(temp,2)); /* debug debug debug printw("%.0f",max_id); refresh(); sleep(2); */ sqlite3_close(db_handle); sqlite3_finalize(temp); free(final_statement); return max_id;}
开发者ID:sanjayankur31,项目名称:twit_tui,代码行数:70,
示例4: db_primitive_speed_testsvoid db_primitive_speed_tests(){ printf( "db_primitive_speed_tests()/n" ); // Try to create the database. If it doesnt exist, it would be created // pass a pointer to the pointer to sqlite3, in short sqlite3** int retval = sqlite3_open(DB_MAINTENANCE_FILE,&handle); // If connection failed, handle returns NULL if(retval) { printf("DATABASE CONNECTION FAILED/n"); return; } printf("Connection successful/n"); const char *magnus = "SELECT COUNT(*) from games, positions_2569 WHERE games.white = 'Carlsen, Magnus' " "AND positions_2569.position_hash=44349918 AND games.game_id = positions_2569.game_id"; const char *stamp = "SELECT COUNT(*) from games, positions_3386 WHERE positions_3386.position_hash=2007903353 " "AND games.game_id = positions_3386.game_id"; const char *sicilian="SELECT COUNT(*) from games, positions_391 WHERE positions_391.position_hash=1592470315 " "AND games.game_id = positions_391.game_id"; char buf[1000]; sqlite3_stmt *stmt; // A prepared statement for fetching tables printf( "Database is %s/n", DB_MAINTENANCE_FILE ); int results[5][3]; time_t start_time; time ( &start_time ); for( int i=0; i<5*3; i++ ) { const char *query, *txt; switch(i%3) { case 0: query = magnus; txt="Magnus"; break; case 1: query = stamp; txt="Stamp"; break; case 2: query = sicilian; txt="Sicilian"; break; } sprintf( buf, "Test %d, %s; begin", i/3+1, txt ); report( buf ); retval = sqlite3_prepare_v2( handle, query, -1, &stmt, 0 ); if( retval ) { printf("SELECTING DATA FROM DB FAILED 1/n"); } retval = sqlite3_step(stmt); if( retval != SQLITE_ROW ) printf("SELECTING DATA FROM DB FAILED 2/n"); else { const char *val = (const char*)sqlite3_column_text(stmt,0); printf("Game count=%d/n", atoi(val) ); } sprintf( buf, "Test %d, %s; end", i/3+1, txt ); int expired = report( buf ); results[i/3][i%3] = expired; sqlite3_finalize(stmt); } for( int i=0; i<5*3; i++ ) { int expired = results[i%5][i/5]; if( i%5 == 0 ) { const char *txt; switch(i/5) { case 0: txt="Magnus:"; break; case 1: txt="Stamp:"; break; case 2: txt="Sicilian:"; break; } printf( "%-10s", txt ); } char buf[100]; sprintf( buf, "%d:%02d", expired/60, expired%60 ); printf( "%8s", buf ); if( (i+1)%5 == 0 ) printf( "/n" ); else printf( "," ); } time_t end_time; time ( &end_time ); int total_elapsed = (end_time-start_time); printf( "Total elapsed: %d:%02d/n", total_elapsed/60, total_elapsed%60 ); // Close the handle to free memory sqlite3_close(handle);}
开发者ID:phenri,项目名称:tarrasch-chess-gui,代码行数:89,
示例5: db_primitive_show_games// A real database testvoid db_primitive_show_games( bool connect ){ printf( "db_primitive_show_games()/n" ); int retval; if( connect ) { // Try to create the database. If it doesnt exist, it would be created // pass a pointer to the pointer to sqlite3, in short sqlite3** retval = sqlite3_open(DB_MAINTENANCE_FILE,&handle); // If connection failed, handle returns NULL if(retval) { printf("DATABASE CONNECTION FAILED/n"); return; } printf("Connection successful/n"); } thc::ChessRules cr; //cr.Forsyth("r1bqk2r/ppp1bppp/2n1pn2/3p4/Q1PP4/P3PN2/1P1N1PPP/R1B1KB1R b KQkq - 0 7"); // Bogo indian position after 8 moves or so 46 games cr.Forsyth("rnbqk2r/pppp1ppp/4pn2/8/1bPP4/2N5/PP2PPPP/R1BQKBNR w KQkq - 2 4"); // Nimzo-Indian start position 24000 games uint32_t hash = cr.HashCalculate(); // select matching rows from the table char buf[100]; sqlite3_stmt *stmt; // A prepared statement for fetching tables sprintf( buf, "SELECT * from positions WHERE position_hash=%d", hash ); retval = sqlite3_prepare_v2( handle, buf, -1, &stmt, 0 ); if( retval ) { printf("SELECTING DATA FROM DB FAILED/n"); } // Read the number of rows fetched int cols = sqlite3_column_count(stmt); std::vector<int> games; report( "Fetching games begin"); while(1) { // fetch a row's status retval = sqlite3_step(stmt); if(retval == SQLITE_ROW) { // SQLITE_ROW means fetched a row // sqlite3_column_text returns a const void* , typecast it to const char* for(int col=0 ; col<cols;col++) { const char *val = (const char*)sqlite3_column_text(stmt,col); //printf("%s:%s/t",sqlite3_column_name(stmt,col),val); if( col == 0 ) { int game_id = atoi(val); games.push_back(game_id); } } //printf("/n"); } else if(retval == SQLITE_DONE) { // All rows finished break; } else { // Some error encountered printf("SOME ERROR ENCOUNTERED/n"); } } report("Fetching games end"); FILE *pgn_out = fopen("/Users/billforster/Documents/games.txt","wt"); report("Dumping games begin"); if( pgn_out ) { for( int i=0; i<games.size(); i++ ) { char buf[100]; if( i%100 == 0 || i==games.size()-1 ) { sprintf( buf,"Game %d",i+1); report(buf); } dump_game( pgn_out, games[i] ); } fclose(pgn_out); } report("Dumping games end"); // Close the handle to free memory sqlite3_close(handle);}
开发者ID:phenri,项目名称:tarrasch-chess-gui,代码行数:100,
示例6: mainint main(int argc, char **argv){ sqlite3 *db; sphyraena sphy; int i, r; int dbarg = -1; int loadmemory = 0; int pinned_memory = 0; for(i = 1; i < argc; i++) { if(argv[i][0] == '-') switch(argv[i][1]) { case 'd' : dbarg = i + 1; printf("Using database %s/n", argv[i+1]); break; case 'm' : loadmemory = 1; printf("Loading database into memory/n"); break; case 'p' : pinned_memory = 1; printf("Using pinned memory/n"); break; default : printhelp(argv); } } if(dbarg == -1) { printhelp(argv); exit(1); } if(loadmemory) { sqlite3_open(":memory:", &db); char sql[256]; sprintf(sql, "ATTACH DATABASE '%s' AS loadfrom", argv[dbarg]); r = sqlite3_exec(db, sql, NULL, NULL, NULL); sqlite3_exec(db, "CREATE TABLE 'test' AS SELECT * FROM loadfrom.test", NULL, NULL, NULL); sqlite3_exec(db, "DETACH loadfrom", NULL, NULL, NULL); } else { r = sqlite3_open(argv[dbarg], &db); } if(r) { eprintf(stderr, "Can't open database: %s/n", sqlite3_errmsg(db)); sqlite3_close(db); exit(1); } sphyraena_init(&sphy, db, DATA_SIZE, RESULTS_SIZE, pinned_memory); int err = sphyraena_init(&sphy, db, DATA_SIZE, RESULTS_SIZE, pinned_memory); if(err != SPHYRAENA_SUCCESS) { eprintf(stderr, "Failing to complete init/n"); sqlite3_close(db); exit(1); }#ifndef RUNTEST sphyraena_timer_start(); sphyraena_prepare_data(&sphy, "SELECT * FROM test"); const char* sql = "SELECT id, uniformi FROM test WHERE uniformi < 90"; char* err; sphyraena_timer_start(); r = sqlite3_exec(db, sql, NULL, NULL, &err); double native = sphyraena_timer_end("native execution"); if(err != NULL) { eprintf(stderr, "exec error: %s/n", err); exit(1); } sphyraena_timer_start(); sphyraena_transfer_data(&sphy); sphyraena_select(&sphy, sql, 0); double vm = sphyraena_timer_end("vm execution"); sphyraena_timer_start(); sphyraena_transfer_results(&sphy); double results = sphyraena_timer_end("transfer results"); printf("stream/n"); printf("speedup: %fx/n", native / vm); printf("speedup with results: %fx/n", native / (vm + results)); sphyraena_print_results(&sphy, 40);#else sphyraena_test_queries(&sphy); /* this code tests speedup as a function of stream width sphyraena_test_sizes(&sphy, 0, 1); sphy.stream_width = 2; sphyraena_test_sizes(&sphy, 1, 0); sphy.stream_width = 4; sphyraena_test_sizes(&sphy, 1, 0);//.........这里部分代码省略.........
开发者ID:dfloer,项目名称:sphyraena-OCL,代码行数:101,
示例7: alarm_servervoid alarm_server (void) { time_t t, now; struct tm * nowtime; uint8 day[7] = {0}; time(&t); nowtime = localtime(&t); if (nowtime->tm_sec > 0 && nowtime->tm_sec < 60) { sleep(60 - nowtime->tm_sec); } while(1) { DEBUG(" Alarm=======> Alarm server is running!/n"); time(&t); sqlite3 *db = NULL; int rc; char * Errormsg; int row; int col; char ** result; rc = sqlite3_open("/opt/smarthome/smarthome.db", &db); if (rc) { DEBUG("can not open: %s/n ", sqlite3_errmsg(db)); sqlite3_close(db); continue; } else { DEBUG("Open database successfuly!/n"); char sql[300] = "create table alarm_data(" "ID integer primary key, " "sett integer," "hour integer, " "minute integer, " "roomid integer," "yinyue integer," "sun integer, " "mon integer, " "tue integer, " "wed integer, " "thu integer, " "fri integer, " "sat integer, " "tishi varchar(40))"; sqlite3_exec(db, sql, 0, 0, &Errormsg); //读出数据库表中所有数据 strcpy(sql, "select * from alarm_data"); sqlite3_get_table(db, sql, &result, &row, &col, &Errormsg); sqlite3_close(db); time(&now); nowtime = localtime(&now); DEBUG("*******************************/n"); DEBUG("The Time Now is %d:%d/t%d/n", nowtime->tm_hour, nowtime->tm_min, nowtime->tm_wday); DEBUG("*******************************/n"); int i = 0; for (i = 1; i < row + 1; i ++) { DEBUG("-----------------------------debug alarm!/n"); int j = 0; for (j = 0; j < col; j ++) { printf("%s/t", result[i * col + j]); } DEBUG("/n"); if (atoi(result[i * col + 3]) == nowtime->tm_min) { if (atoi(result[i * col + 2]) == nowtime->tm_hour) { day[0] = atoi(result[i * col + 6]); day[1] = atoi(result[i * col + 7]); day[2] = atoi(result[i * col + 8]); day[3] = atoi(result[i * col + 9]); day[4] = atoi(result[i * col + 10]); day[5] = atoi(result[i * col + 11]); day[6] = atoi(result[i * col + 12]); if (day[nowtime->tm_wday] == 1) { alarm_cycle(atoi(result[i * col + 4]), atoi(result[i * col + 5]), result[i * col + 13]); } } } } } //睡眠1分钟 DEBUG(" Alarm=======> before sleep!/n"); sleep(50); time(&now); t += 60; sleep(t - now); }}
开发者ID:markmoon,项目名称:miniserver,代码行数:83,
示例8: sqlite3_closeAccountManager::~AccountManager(){ if (db) sqlite3_close(db);}
开发者ID:haidian6672,项目名称:seafile-client,代码行数:5,
示例9: maildb_sqlite_new/* This function opens the database if it already exists, or creates a new one * if it does not exist. If necessary, a conversion to the latest format is * performed. * This function sets the KMO error string. It returns NULL on failure. */maildb * maildb_sqlite_new(char *db_name){ int version = 0; sqlite3 *db = NULL; kmod_log_msg(2, "maildb_sqlite_new() called./n"); /* Open or create the database. */ if (sqlite3_open(db_name, &db)) { kmo_seterror("cannot open %s: %s", db_name, sqlite3_errmsg(db)); goto ERR; } /* Get the database version. */ maildb_get_version(db, &version); /* Initialize new database. */ if (version == 0) { kmod_log_msg(1, "Initializing new KMOD database./n"); if (maildb_sqlite_initialize(db)) goto ERR; } /* Convert database to version 2. */ else if (version == 1) { kmod_log_msg(1, "Converting KMOD database from version 1 to version 2./n"); if (maildb_convert_to_version_2(db)) goto ERR; } /* Convert database to version 3. */ else if (version == 2) { kmod_log_msg(1, "Converting KMOD database from version 2 to version 3./n"); if (maildb_convert_to_version_3(db)) goto ERR; } /* Convert database to version 4. */ else if (version == 3) { kmod_log_msg(1, "Converting KMOD database from version 3 to version 4./n"); if (maildb_convert_to_version_4(db)) goto ERR; } /* Database is at current version. */ else if (version == 4) { kmod_log_msg(1, "The KMOD database is at version 4./n"); } /* Database is too recent -- we can't deal with it since we would corrupt it. */ else { kmo_seterror("database version %d is unsupported (latest supported version is %d)", version, 4); goto ERR; } /* Initialize the maildb object. */ maildb *mdb = (maildb *) kmo_calloc(sizeof(maildb)); mdb->db = db; mdb->ops = &maildb_sqlite_ops; /* All good. */ return mdb;ERR: if (db) sqlite3_close(db); return NULL;}
开发者ID:fdgonthier,项目名称:kmod,代码行数:68,
示例10: mainint main(int argc, char *argv[]){ const char * sSQL1 = "create table users(userid varchar(40) PRIMARY KEY, age int, birthday datetime);"; char * pErrMsg = 0; int result = 0; char str; char * SQL; // 连接数据库 sqlite3 * db = 0; int ret = sqlite3_open("E://SQLite//test.db", &db); if (ret != SQLITE_OK) { fprintf(stderr, "无法打开数据库: %s", sqlite3_errmsg(db)); return(1); } else printf("数据库连接成功!/n"); // 执行建表SQL sqlite3_exec(db, sSQL1, 0, 0, &pErrMsg); if (ret != SQLITE_OK){ fprintf(stderr, "SQL error: %s/n", pErrMsg); sqlite3_free(pErrMsg); } // 执行插入记录SQL result = sqlite3_exec(db, "insert into users values('ll',20,'2011-7-23');", 0, 0, &pErrMsg); if (result == SQLITE_OK){ printf("插入数据成功/n"); } result = sqlite3_exec(db, "insert into users values('sdd',20,'2012-9-20');", 0, 0, &pErrMsg); if (result == SQLITE_OK){ printf("插入数据成功/n"); } result = sqlite3_exec(db, "update users set age = 23 where userid = 'll';",0,0,&pErrMsg); if (result == SQLITE_OK){ printf("修改数据成功/n"); } // 插入数据 result = sqlite3_exec(db, "insert into users values('hello',23,'2016-5-21');",0,0,&pErrMsg); if (result == SQLITE_OK){ printf("插入数据成功/n"); } // 查询数据表 printf("查询数据库内容/n"); sqlite3_exec(db, "select * from users;", select_callback, 0, &pErrMsg); // 按条件查找 printf("请输出需要查找的的字段名:"); scanf_s("%s/n",&str); SQL = "select * from users where name like '_str%';"; sqlite3_exec(db,SQL,select_callback,0,&pErrMsg); // 关闭数据库 sqlite3_close(db); db = 0; printf("数据库关闭成功!/n"); return 0;}
开发者ID:leo-ll,项目名称:Learnning,代码行数:63,
示例11: QDir/** * convert current project to offline project * returns offline project file path */bool QgsOfflineEditing::convertToOfflineProject( const QString& offlineDataPath, const QString& offlineDbFile, const QStringList& layerIds ){ if ( layerIds.isEmpty() ) { return false; } QString dbPath = QDir( offlineDataPath ).absoluteFilePath( offlineDbFile ); if ( createSpatialiteDB( dbPath ) ) { spatialite_init( 0 ); sqlite3* db; int rc = sqlite3_open( dbPath.toStdString().c_str(), &db ); if ( rc != SQLITE_OK ) { showWarning( tr( "Could not open the spatialite database" ) ); } else { // create logging tables createLoggingTables( db ); mProgressDialog->setTitle( "Converting to offline project" ); mProgressDialog->show(); // copy selected vector layers to SpatiaLite for ( int i = 0; i < layerIds.count(); i++ ) { mProgressDialog->setCurrentLayer( i + 1, layerIds.count() ); QgsMapLayer* layer = QgsMapLayerRegistry::instance()->mapLayer( layerIds.at( i ) ); copyVectorLayer( qobject_cast<QgsVectorLayer*>( layer ), db, dbPath ); } mProgressDialog->hide(); sqlite3_close( db ); // save offline project QString projectTitle = QgsProject::instance()->title(); if ( projectTitle.isEmpty() ) { projectTitle = QFileInfo( QgsProject::instance()->fileName() ).fileName(); } projectTitle += " (offline)"; QgsProject::instance()->title( projectTitle ); QgsProject::instance()->writeEntry( PROJECT_ENTRY_SCOPE_OFFLINE, PROJECT_ENTRY_KEY_OFFLINE_DB_PATH, dbPath ); return true; } } return false; // Workflow: // copy layers to spatialite // create spatialite db at offlineDataPath // create table for each layer // add new spatialite layer // copy features // save as offline project // mark offline layers // remove remote layers // mark as offline project}
开发者ID:RealworldSystems,项目名称:Quantum-GIS,代码行数:69,
示例12: openLoggingDb//.........这里部分代码省略......... // restore and sync remote layers QList<QgsMapLayer*> offlineLayers; QMap<QString, QgsMapLayer*> mapLayers = QgsMapLayerRegistry::instance()->mapLayers(); for ( QMap<QString, QgsMapLayer*>::iterator layer_it = mapLayers.begin() ; layer_it != mapLayers.end(); ++layer_it ) { QgsMapLayer* layer = layer_it.value(); if ( layer->customProperty( CUSTOM_PROPERTY_IS_OFFLINE_EDITABLE, false ).toBool() ) { offlineLayers << layer; } } for ( int l = 0; l < offlineLayers.count(); l++ ) { QgsMapLayer* layer = offlineLayers[l]; mProgressDialog->setCurrentLayer( l + 1, offlineLayers.count() ); QString remoteSource = layer->customProperty( CUSTOM_PROPERTY_REMOTE_SOURCE, "" ).toString(); QString remoteProvider = layer->customProperty( CUSTOM_PROPERTY_REMOTE_PROVIDER, "" ).toString(); QString remoteName = layer->name(); remoteName.remove( QRegExp( " //(offline//)$" ) ); QgsVectorLayer* remoteLayer = new QgsVectorLayer( remoteSource, remoteName, remoteProvider ); if ( remoteLayer->isValid() ) { // TODO: only add remote layer if there are log entries? QgsVectorLayer* offlineLayer = qobject_cast<QgsVectorLayer*>( layer ); // copy style copySymbology( offlineLayer, remoteLayer ); // register this layer with the central layers registry QgsMapLayerRegistry::instance()->addMapLayer( remoteLayer, true ); // apply layer edit log QString qgisLayerId = layer->id(); QString sql = QString( "SELECT /"id/" FROM 'log_layer_ids' WHERE /"qgis_id/" = '%1'" ).arg( qgisLayerId ); int layerId = sqlQueryInt( db, sql, -1 ); if ( layerId != -1 ) { remoteLayer->startEditing(); // TODO: only get commitNos of this layer? int commitNo = getCommitNo( db ); for ( int i = 0; i < commitNo; i++ ) { // apply commits chronologically applyAttributesAdded( remoteLayer, db, layerId, i ); applyAttributeValueChanges( offlineLayer, remoteLayer, db, layerId, i ); applyGeometryChanges( remoteLayer, db, layerId, i ); } applyFeaturesAdded( offlineLayer, remoteLayer, db, layerId ); applyFeaturesRemoved( remoteLayer, db, layerId ); if ( remoteLayer->commitChanges() ) { // update fid lookup updateFidLookup( remoteLayer, db, layerId ); // clear edit log for this layer sql = QString( "DELETE FROM 'log_added_attrs' WHERE /"layer_id/" = %1" ).arg( layerId ); sqlExec( db, sql ); sql = QString( "DELETE FROM 'log_added_features' WHERE /"layer_id/" = %1" ).arg( layerId ); sqlExec( db, sql ); sql = QString( "DELETE FROM 'log_removed_features' WHERE /"layer_id/" = %1" ).arg( layerId ); sqlExec( db, sql ); sql = QString( "DELETE FROM 'log_feature_updates' WHERE /"layer_id/" = %1" ).arg( layerId ); sqlExec( db, sql ); sql = QString( "DELETE FROM 'log_geometry_updates' WHERE /"layer_id/" = %1" ).arg( layerId ); sqlExec( db, sql ); // reset commitNo QString sql = QString( "UPDATE 'log_indices' SET 'last_index' = 0 WHERE /"name/" = 'commit_no'" ); sqlExec( db, sql ); } else { showWarning( remoteLayer->commitErrors().join( "/n" ) ); } } // remove offline layer QgsMapLayerRegistry::instance()->removeMapLayer( qgisLayerId, true ); // disable offline project QString projectTitle = QgsProject::instance()->title(); projectTitle.remove( QRegExp( " //(offline//)$" ) ); QgsProject::instance()->title( projectTitle ); QgsProject::instance()->removeEntry( PROJECT_ENTRY_SCOPE_OFFLINE, PROJECT_ENTRY_KEY_OFFLINE_DB_PATH ); remoteLayer->reload(); //update with other changes } } mProgressDialog->hide(); sqlite3_close( db );}
开发者ID:RealworldSystems,项目名称:Quantum-GIS,代码行数:101,
示例13: close_db void close_db() { sqlite3_close(db); }
开发者ID:insertion,项目名称:sqlite,代码行数:4,
示例14: sqlite3_closeSqliteConnection::~SqliteConnection (){ if (database) sqlite3_close ((sqlite3*) database);}
开发者ID:dennyabrain,项目名称:DISTRHO,代码行数:5,
示例15: maildb_sqlite_destroy/* This function frees the database. */static void maildb_sqlite_destroy(maildb *mdb) { sqlite3 *db = (sqlite3 *) mdb->db; sqlite3_close(db); free(mdb);}
开发者ID:fdgonthier,项目名称:kmod,代码行数:6,
示例16: magnatune_get_db_donestatic voidmagnatune_get_db_done(GObject *source_object, GAsyncResult *res, gpointer user_data){ gchar *db_path = NULL; gchar *new_db_path = NULL; gchar *content = NULL; gsize length = 0; gboolean ret = FALSE; gboolean first_run = FALSE; GError *err = NULL; GError *err_fn = NULL; OperationSpec *os = NULL; GrlMagnatuneSource *source = NULL; GRL_DEBUG("magnatune_get_db_done"); os = (OperationSpec *) user_data; ret = grl_net_wc_request_finish(GRL_NET_WC(source_object), res, &content, &length, &err_fn); g_object_unref(source_object); if (ret == FALSE) { err = g_error_new(GRL_CORE_ERROR, GRL_CORE_ERROR_MEDIA_NOT_FOUND, _("Failed to get database from magnatune: %s"), err_fn->message); g_error_free(err_fn); if (os != NULL) os->callback(os->source, os->operation_id, NULL, 0, os->user_data, err); } else { db_path = g_build_filename(g_get_user_data_dir(), "grilo-plugins", GRL_SQL_DB, NULL); /* If this is a first run, new database must be ready to use */ if (g_file_test(db_path, G_FILE_TEST_EXISTS) == FALSE) { new_db_path = db_path; first_run = TRUE; } else { g_free(db_path); new_db_path = g_build_filename(g_get_user_data_dir(), "grilo-plugins", GRL_SQL_NEW_DB, NULL); } GRL_WARNING("Saving database to path '%s'", new_db_path); ret = g_file_set_contents(new_db_path, content, length, &err_fn); if (ret == FALSE) { err = g_error_new(GRL_CORE_ERROR, GRL_CORE_ERROR_MEDIA_NOT_FOUND, _("Failed to save database from magnatune: “%s”"), err_fn->message); g_error_free(err_fn); if (os != NULL) os->callback(os->source, os->operation_id, NULL, 0, os->user_data, err); } else if (first_run == TRUE) { source = GRL_MAGNATUNE_SOURCE(os->source); if (source->priv->db == NULL) { GRL_DEBUG("Opening database connection."); if (sqlite3_open(db_path, &source->priv->db) != SQLITE_OK) { GRL_WARNING("Failed to open database '%s': %s", db_path, sqlite3_errmsg(source->priv->db)); sqlite3_close(source->priv->db); source->priv->db = NULL; } } } g_free(new_db_path); } if (ret == TRUE && os != NULL) { /* execute application's request */ os->magnatune_cb(os); }}
开发者ID:GNOME,项目名称:grilo-plugins,代码行数:88,
示例17: pkg_create_repo//.........这里部分代码省略......... if (r->retcode != EPKG_OK) { continue; } /* do not add if package if already in repodb (possibly at a different pkg_path) */ retcode = pkgdb_repo_cksum_exists(sqlite, r->cksum); if (retcode == EPKG_FATAL) { goto cleanup; } else if (retcode == EPKG_OK) { continue; } if (progress != NULL) progress(r->pkg, data); manifest_pos = ftell(psyml); pkg_emit_manifest_file(r->pkg, psyml, PKG_MANIFEST_EMIT_COMPACT, &manifest_digest); if (filelist) { files_pos = ftell(fsyml); pkg_emit_filelist(r->pkg, fsyml); } else { files_pos = 0; } pkg_get(r->pkg, PKG_ORIGIN, &origin); cur_dig = malloc(sizeof (struct digest_list_entry)); cur_dig->origin = strdup(origin); cur_dig->digest = manifest_digest; cur_dig->manifest_pos = manifest_pos; cur_dig->files_pos = files_pos; LL_PREPEND(dlist, cur_dig); retcode = pkgdb_repo_add_package(r->pkg, r->path, sqlite, manifest_digest, false, true); if (retcode == EPKG_END) { continue; } else if (retcode != EPKG_OK) { goto cleanup; } pkg_free(r->pkg); free(r); } /* Now sort all digests */ LL_SORT(dlist, digest_sort_compare_func);cleanup: if (pkgdb_repo_close(sqlite, retcode == EPKG_OK) != EPKG_OK) { retcode = EPKG_FATAL; } LL_FOREACH_SAFE(dlist, cur_dig, dtmp) { if (retcode == EPKG_OK) { fprintf(mandigests, "%s:%s:%ld:%ld/n", cur_dig->origin, cur_dig->digest, cur_dig->manifest_pos, cur_dig->files_pos); } free(cur_dig->digest); free(cur_dig->origin); free(cur_dig); } if (tids != NULL) { // Cancel running threads if (retcode != EPKG_OK) { pthread_mutex_lock(&thd_data.fts_m); thd_data.stop = true; pthread_mutex_unlock(&thd_data.fts_m); } // Join on threads to release thread IDs for (int i = 0; i < num_workers; i++) { pthread_join(tids[i], NULL); } free(tids); } if (fts != NULL) fts_close(fts); if (fsyml != NULL) fclose(fsyml); if (psyml != NULL) fclose(psyml); if (mandigests != NULL) fclose(mandigests); if (sqlite != NULL) sqlite3_close(sqlite); if (errmsg != NULL) sqlite3_free(errmsg); sqlite3_shutdown(); return (retcode);}
开发者ID:yerenkow,项目名称:pkg,代码行数:101,
示例18: throw// Close the SQLite database connection.Database::~Database(void) throw() // nothrow{ int ret = sqlite3_close(mpSQLite); // Never throw an exception in a destructor SQLITECPP_ASSERT (SQLITE_OK == ret, sqlite3_errmsg(mpSQLite)); // See SQLITECPP_ENABLE_ASSERT_HANDLER}
开发者ID:HeliosInteractive,项目名称:ofxSQLiteCpp,代码行数:7,
示例19: sqlite3_closevoid QgsScopedSqlite::close_(){ if ( db_ ) sqlite3_close( db_ );}
开发者ID:GrokImageCompression,项目名称:QGIS,代码行数:5,
示例20: handle_requeststatic int handle_request(struct mg_connection *conn){ char * json_data; cJSON *root; char *json; char *title; char *description; int completed; if (!strcmp(conn->request_method, "POST") && !strncmp(conn->uri, "/api/v1",strlen("/api/v1"))) { printf("api v1/n"); json_data = get_post_data(conn); if(json_data == NULL) { printf("Error json data: NULL/n"); mg_printf_data(conn, "%s","Error jason data:NULL"); free(json_data); return MG_TRUE; // Tell mongoose to close this connection } printf("input json data: %s/n", json_data); root = cJSON_Parse(json_data); if (root == NULL) { mg_printf_data(conn, "%s","Error jason data:Wrong format"); free(json_data); return MG_TRUE; } if (!strncmp(conn->uri,"/api/v1/cars", strlen("/api/v1/cars"))) { int id; char *name; int price; sqlite3 *db; char *err_msg = 0; id = cJSON_GetObjectItem(root,"Id")->valueint; name = cJSON_GetObjectItem(root,"Name")->valuestring; price = cJSON_GetObjectItem(root,"Price")->valueint; printf("id = %d,Name = %s, Price=%d",id,name,price); int rc = sqlite3_open("quanta.db", &db); if (rc != SQLITE_OK) { fprintf(stderr, "Cannot open database: %s/n", sqlite3_errmsg(db)); sqlite3_close(db); return MG_TRUE; // Tell mongoose to close this connection } char sql[100]; sprintf(sql,"INSERT INTO Cars VALUES(%d, '%s', %d);",id,name,price); rc = sqlite3_exec(db, sql, 0, 0, &err_msg); if (rc != SQLITE_OK ) { fprintf(stderr, "SQL error: %s/n", err_msg); sqlite3_free(err_msg); sqlite3_close(db); return MG_TRUE; // Tell mongoose to close this connection } sqlite3_free(err_msg); sqlite3_close(db); } else { description = cJSON_GetObjectItem(root,"description")->valuestring; title = cJSON_GetObjectItem(root,"title")->valuestring; completed = cJSON_GetObjectItem(root,"completed")->valueint; printf("title = %s,description = %s, completed = %d/n",title,description,completed); } json = cJSON_PrintUnformatted(root); write_json_result(conn, 0, json); free(json_data); return MG_TRUE; // Tell mongoose to close this connection } else if (!strcmp(conn->request_method, "GET") && !strncmp(conn->uri, "/api/v1",strlen("/api/v1"))) { sqlite3 *db; char *err_msg = 0; char sql[100]; int id; char response_buff[100]; printf("get api v1/n"); if(!strncmp(conn->uri,"/api/v1/cars",strlen("/api/v1/cars"))) { sscanf(conn->uri,"/api/v1/cars/%d/",&id); int rc = sqlite3_open("quanta.db", &db); if (rc != SQLITE_OK) { fprintf(stderr, "Cannot open database: %s/n", sqlite3_errmsg(db)); sqlite3_close(db); return MG_TRUE; // Tell mongoose to close this connection } sprintf(sql,"SELECT * FROM Cars WHERE Id = %d",id); rc = sqlite3_exec(db,sql, callback, response_buff, &err_msg); if (rc != SQLITE_OK ) { fprintf(stderr, "Failed to select data/n"); fprintf(stderr, "SQL error: %s/n", err_msg);//.........这里部分代码省略.........
开发者ID:jimlin95,项目名称:webservice_restful,代码行数:101,
示例21: sqlite3_close/** * 析构函数 * */ZYSDbc::~ZYSDbc() { if (m_pDb) { sqlite3_close(m_pDb); m_pDb = NULL; }}
开发者ID:zyCwind,项目名称:EnOcean-Switch-Tester,代码行数:10,
示例22: db_primitive_random_test_program//.........这里部分代码省略......... sqlite3_stmt *stmt; // Create a handle for database connection, create a pointer to sqlite3 sqlite3 *handle; // try to create the database. If it doesnt exist, it would be created // pass a pointer to the pointer to sqlite3, in short sqlite3** retval = sqlite3_open(DB_MAINTENANCE_FILE,&handle); // If connection failed, handle returns NULL if(retval) { printf("Database connection failed/n"); return -1; } printf("Connection successful/n"); // Create the SQL query for creating a table const char *create_table = "CREATE TABLE IF NOT EXISTS positions (game_id INTEGER, position_hash INTEGER)"; // Execute the query for creating the table retval = sqlite3_exec(handle,create_table,0,0,0); if( retval ) { printf("sqlite3_exec(CREATE) Failed/n"); return -1; } // Delete previous data retval = sqlite3_exec( handle, "DELETE FROM positions",0,0,0); if( retval ) { printf("sqlite3_exec(DELETE) Failed/n"); return -1; } // Insert first row and second row char *errmsg; retval = sqlite3_exec( handle, "INSERT INTO positions VALUES(2,33334444)",0,0,&errmsg); if( retval ) { printf("sqlite3_exec(INSERT 1) Failed %s/n", errmsg ); return -1; } retval = sqlite3_exec( handle, "INSERT INTO positions VALUES(2,4444)",0,0,0); if( retval ) { printf("sqlite3_exec(INSERT 2) Failed/n"); return -1; } // select those rows from the table retval = sqlite3_prepare_v2( handle, "SELECT * from positions", -1, &stmt, 0 ); if( retval ) { printf("Selecting data from DB Failed/n"); return -1; } // Read the number of rows fetched int cols = sqlite3_column_count(stmt); while(1) { // fetch a row's status retval = sqlite3_step(stmt); if(retval == SQLITE_ROW) { // SQLITE_ROW means fetched a row // sqlite3_column_text returns a const void* , typecast it to const char* for(int col=0 ; col<cols;col++) { int val = sqlite3_column_int(stmt,col); printf("%s = 0x%08x/t",sqlite3_column_name(stmt,col),val); } printf("/n"); } else if(retval == SQLITE_DONE) { // All rows finished printf("All rows fetched/n"); break; } else { // Some error encountered printf("Some error encountered/n"); return -1; } } // Close the handle to free memory sqlite3_close(handle); return 0;}
开发者ID:phenri,项目名称:tarrasch-chess-gui,代码行数:101,
示例23: sqlite3_closebool SettingsManager::save(const QString& path){ QByteArray data = path.toLatin1(); if(sqlite3_open(data.constData(), &(m_db))) { sqlite3_close(m_db); return false; }#if defined(SQLITE_HAS_CODEC) char tmp[9]; // Grab the obfuscated key sqlite3_obfuscate_key(tmp); if(SQLITE_OK != sqlite3_key((sqlite3*) m_db, tmp, 8)) { memset(tmp, 0, 9); sqlite3_close(m_db); return false; } // Clear the key so it isn't stored in memory memset(tmp, 0, 9);#endif QMap<QString, QString>::iterator siter; QString query = "BEGIN TRANSACTION;/n"; sqllite_resultset_t rs; int rc; for(siter = m_globals.begin(); siter != m_globals.end(); siter++) { QString k = siter.key(); QString v = siter.value(); query += QString("UPDATE Settings SET value='%1' WHERE key='%2';/n"). arg(add_slashes(v)). arg(add_slashes(k)); } QMap<int, QMap<QString, QMap<QString,QStringList> > >::iterator fiter; query += QString("DELETE FROM DeviceLists;/n"); //rs.rows.clear(); //sqlite3_exec((sqlite3*)m_db, qPrintable(query), NULL, NULL, NULL); for(fiter = m_favorites.begin(); fiter != m_favorites.end(); fiter++) { QMap<QString, QMap<QString,QStringList> >::iterator liter; int chip = fiter.key(); for(liter = fiter.value().begin(); liter != fiter.value().end(); liter++) { QString category = liter.key(); QMap<QString,QStringList> lists = liter.value(); QMap<QString,QStringList>::iterator viter; for(viter = lists.begin(); viter != lists.end(); viter++) { QString list = viter.key(); QStringList items = viter.value(); for(int i = 0; i < items.count(); i++) { QString item = items.at(i); query += QString("INSERT INTO DeviceLists (chip,category,key,value) VALUES('%1', '%2', '%3', '%4');/n"). arg(chip). arg(add_slashes(category)). arg(add_slashes(list)). arg(add_slashes(item)); //qDebug() << query; //sqlite3_exec((sqlite3*)m_db, qPrintable(query), NULL, NULL, NULL); } } } } query += "END TRANSACTION;/n"; data = query.toLatin1(); rc = sqlite3_exec((sqlite3*)m_db, data.constData(), NULL, NULL, NULL); sqlite3_close(m_db); if(rc == SQLITE_OK) { // Settings no longer modified after writing back to dB m_settings_modified = false;//.........这里部分代码省略.........
开发者ID:bradfordelliott,项目名称:shorte,代码行数:101,
示例24: srt_join//.........这里部分代码省略......... status = core_srt_join_I_I_I( (int *)src_lnk_X, (int *)src_val_X, src_nR, (int *)dst_lnk_X, (int *)dst_val_X, nn_dst_val_X, 0, dst_nR, ijoin_op, &is_any_null); } else if ( ( strcmp(src_lnk_meta.fldtype, "int") == 0 ) && ( strcmp(src_lnk_meta.fldtype, "int") == 0 ) && ( strcmp(dst_lnk_meta.fldtype, "long long") == 0 ) ) { status = core_srt_join_I_I_L( (int *)src_lnk_X, (int *)src_val_X, src_nR, (long long *)dst_lnk_X, (int *)dst_val_X, nn_dst_val_X, 0, dst_nR, ijoin_op, &is_any_null); } else if ( ( strcmp(src_lnk_meta.fldtype, "int") == 0 ) && ( strcmp(src_lnk_meta.fldtype, "long long") == 0 ) && ( strcmp(dst_lnk_meta.fldtype, "int") == 0 ) ) { status = core_srt_join_I_L_I( (int *)src_lnk_X, (long long *)src_val_X, src_nR, (int *)dst_lnk_X, (long long *)dst_val_X, nn_dst_val_X, 0, dst_nR, ijoin_op, &is_any_null); } else if ( ( strcmp(src_lnk_meta.fldtype, "int") == 0 ) && ( strcmp(src_lnk_meta.fldtype, "long long") == 0 ) && ( strcmp(dst_lnk_meta.fldtype, "long long") == 0 ) ) { status = core_srt_join_I_L_L((int *)src_lnk_X, (long long *)src_val_X, src_nR, (long long *)dst_lnk_X, (long long *)dst_val_X, nn_dst_val_X, 0, dst_nR, ijoin_op, &is_any_null); } else if ( ( strcmp(src_lnk_meta.fldtype, "long long") == 0 ) && ( strcmp(src_lnk_meta.fldtype, "int") == 0 ) && ( strcmp(dst_lnk_meta.fldtype, "int") == 0 ) ) { status = core_srt_join_L_I_I( (long long *)src_lnk_X, (int *)src_val_X, src_nR, (int *)dst_lnk_X, (int *)dst_val_X, nn_dst_val_X, 0, dst_nR, ijoin_op, &is_any_null); } else if ( ( strcmp(src_lnk_meta.fldtype, "long long") == 0 ) && ( strcmp(src_lnk_meta.fldtype, "int") == 0 ) && ( strcmp(dst_lnk_meta.fldtype, "long long") == 0 ) ) { status = core_srt_join_L_I_L( (long long *)src_lnk_X, (int *)src_val_X, src_nR, (long long *)dst_lnk_X, (int *)dst_val_X, nn_dst_val_X, 0, dst_nR, ijoin_op, &is_any_null); } else if ( ( strcmp(src_lnk_meta.fldtype, "long long") == 0 ) && ( strcmp(src_lnk_meta.fldtype, "long long") == 0 ) && ( strcmp(dst_lnk_meta.fldtype, "int") == 0 ) ) { status = core_srt_join_L_L_I( (long long *)src_lnk_X, (long long *)src_val_X, src_nR, (int *)dst_lnk_X, (long long *)dst_val_X, nn_dst_val_X, 0, dst_nR, ijoin_op, &is_any_null); } else if ( ( strcmp(src_lnk_meta.fldtype, "long long") == 0 ) && ( strcmp(src_lnk_meta.fldtype, "long long") == 0 ) && ( strcmp(dst_lnk_meta.fldtype, "long long") == 0 ) ) { status = core_srt_join_L_L_L( (long long *)src_lnk_X, (long long *)src_val_X, src_nR, (long long *)dst_lnk_X, (long long *)dst_val_X, nn_dst_val_X, 0, dst_nR, ijoin_op, &is_any_null); } else { go_BYE(-1); } //-------------------------------------------------------- // Add output field to meta data if ( ( src_val != NULL ) && ( *src_val != '/0' ) ) { sprintf(str_meta_data,"filename=%s:n_sizeof=%d:fldtype=%s", opfile, src_val_meta.n_sizeof, src_val_meta.fldtype); status = add_fld(docroot, db, dst_tbl, dst_fld, str_meta_data); cBYE(status); if ( is_any_null == true ) { status = add_aux_fld(docroot, db, dst_tbl, dst_fld, nn_opfile, "nn"); cBYE(status); } else { unlink(nn_opfile); free_if_non_null(nn_opfile); } } else { sprintf(str_meta_data,"filename=%s:n_sizeof=%ld:fldtype=bool", nn_opfile, sizeof(char)); status = add_fld(docroot, db, dst_tbl, dst_fld, str_meta_data); cBYE(status); } BYE: if ( in_db == NULL ) { sqlite3_close(db); } rs_munmap(src_val_X, src_val_nX); rs_munmap(src_lnk_X, src_lnk_nX); rs_munmap(dst_val_X, dst_val_nX); rs_munmap(nn_dst_val_X, nn_dst_val_nX); rs_munmap(dst_lnk_X, dst_lnk_nX); free_if_non_null(nn_opfile); free_if_non_null(opfile); return(status);}
开发者ID:TimLand,项目名称:datacl,代码行数:101,
示例25: sqlite3_closeDatabase::~Database(){ sqlite3_close(connection);}
开发者ID:JaredRauch,项目名称:Cyber-Dragon-Repository,代码行数:3,
示例26: mainint main(int argc, char **argv){ sqlite3 *db; char *zErrMsg = 0; int rc; if( argc!=3 ){ fprintf(stderr, "Usage: %s DATABASE 'select S(1,2,3,4,5,6)'/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); } if (sqlite3_create_function(db, "msign", 1, SQLITE_UTF8, NULL, &msignFunc, NULL, NULL) != 0) fprintf(stderr,"Problem with msign/n"); if (sqlite3_create_function(db, "T", -1, SQLITE_UTF8, NULL, &TFunc, NULL, NULL) != 0) fprintf(stderr,"Problem with T using just TFunc /n"); if (sqlite3_create_function(db, "F", 1, SQLITE_UTF8, NULL, &FFunc, NULL, NULL) != 0) fprintf(stderr,"Problem with F using just FFunc /n"); if (sqlite3_create_function(db, "I", 2, SQLITE_UTF8, NULL, &IFunc, NULL, NULL) != 0) fprintf(stderr,"Problem with I using just IFunc /n"); /* * With 2 or more arguments call the simple function ssum. Simple functions * can be used within an expression. Aggregate functions can only be used * in a select. */ if (sqlite3_create_function(db, "S", -1, SQLITE_UTF8, NULL, &SFunc, NULL, NULL) != 0) fprintf(stderr,"Problem with S using just SFunc /n"); /* * With one argument call the aggregate function. */ if (sqlite3_create_function(db, "S", 1, SQLITE_UTF8, NULL, NULL, &SStep, &SFinalize) != 0) fprintf(stderr,"Problem with S using SStep and SFinalize/n"); if (sqlite3_create_function(db, "L", 1, SQLITE_UTF8, NULL, NULL, &listStep, &listFinalize) != 0) fprintf(stderr,"Problem with list using listStep and listFinalize/n"); rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg); if( rc!=SQLITE_OK ){ fprintf(stderr, "SQL error: %s/n", zErrMsg); } sqlite3_close(db); return 0;}
开发者ID:abhishekbh,项目名称:SQLite-Rank-Extension,代码行数:79,
示例27: sqlite3_close/** * /fn close() * /brief Close the database. * * /param * /return void */void DatabaseUTF::close(){ sqlite3_close(database); }
开发者ID:GENIVI,项目名称:navigation,代码行数:11,
注:本文中的sqlite3_close函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ sqlite3_column_blob函数代码示例 C++ sqlite3_clear_bindings函数代码示例 |