Advertisement
Guest User

eugen

a guest
Mar 10th, 2010
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.87 KB | None | 0 0
  1. //-----------------------------------------------------------------------------
  2. #include "sqlite3.h"
  3. #include <iostream>
  4. //-----------------------------------------------------------------------------
  5. static int callback(void *NotUsed, int argc, char **argv, char **azColName){
  6.   int i;
  7.   for(i=0; i<argc; i++){
  8.      std::cout << azColName[i] << " = " << ( argv[i] ? argv[i] : "NULL" ) << std::endl;
  9.   }
  10.   std::cout << std::endl;
  11.  
  12.   return 0;
  13. }
  14. //-----------------------------------------------------------------------------
  15. int main(int argc, char **argv){
  16.   sqlite3 *db = NULL;
  17.   char *zErrMsg = 0;
  18.   int rc;
  19.  
  20.   if( argc!=3 ){
  21.     std::cerr << "Usage: " << argv[0] << " DATABASE SQL-STATEMENT" << std::endl;
  22.     return 1;
  23.   }
  24.  
  25.   std::cout << "Db  : " << argv[1] << std::endl;
  26.   std::cout << "SQL : " << argv[2] << std::endl;
  27.  
  28.   rc = sqlite3_open_v2(argv[1], &db, SQLITE_OPEN_READONLY, NULL);
  29.   if( rc!=SQLITE_OK || NULL == db ){
  30.     std::cerr << "Can't open database: " << sqlite3_errmsg(db) << std::endl;
  31.     sqlite3_close(db);
  32.     return 1;
  33.   }
  34.  
  35.   // method 1
  36.   std::cout << "method 1: sqlite3_exec" << std::endl;
  37.   rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);
  38.   if( rc!=SQLITE_OK ){
  39.     std::cerr << "SQL error: " << zErrMsg << std::endl;
  40.     sqlite3_free(zErrMsg);
  41.   }
  42.  
  43.   // method 2
  44.   std::cout << "method 1: sqlite3_get_table" << std::endl;
  45.   int iRows = 0, iCols = 0;
  46.   char **sTable = 0;
  47.   rc = sqlite3_get_table( db, argv[2], &sTable, &iRows, &iCols, &zErrMsg );
  48.   if( rc!=SQLITE_OK ){
  49.     std::cerr << "SQL error: " << zErrMsg << std::endl;
  50.     sqlite3_free(zErrMsg);
  51.   }
  52.   for(int i=0; i< iCols; i++){
  53.      std::cout << sTable[ i ] << " = " << sTable[ i + iCols ] << std::endl;
  54.   }
  55.   sqlite3_free_table( sTable );
  56.  
  57.   sqlite3_close(db);
  58.  
  59.   return 0;
  60. }
  61. //-----------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement