Á¶°¢ ÄÚµå : sqlite3 ÁúÀǾî ó¸®
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : Code>C++>sqlite3_query



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

¼Ò°³

callback ÇÔ¼ö¸¦ È£ÃâÇÏÁö ¾Ê°í, ³·Àº ¼öÁØÀÇ API¸¦ ÀÌ¿ëÇØ¼­ Á÷Á¢ ÁúÀÇ °á°ú¸¦ ó¸®ÇÑ´Ù.
001  #include <sqlite3.h>
002  #include <string.h>
003  #include <stdio.h>
004  
005  #include <iostream>
006  #include <string>
007  #include <vector>
008  
009  using namespace std;
010  
011  class Sqlite
012  {
013  private:
014      sqlite3 *mdb;
015      string mdbname;
016      sqlite3_stmt *stmt;
017      vector<string> mRow;
018      bool classCheckFlag;
019  
020  public:
021      Sqlite(string adbname)
022      {
023          int rc;
024          classCheckFlag = false;
025          mdbname = adbname;
026          // DB ¿­±â
027          rc = sqlite3_open(mdbname.c_str(), &mdb);
028          if(rc == SQLITE_OK)
029          {
030              classCheckFlag = true;
031          }
032      }
033  
034      ~Sqlite()
035      {
036          sqlite3_close(mdb); 
037      }
038  
039      bool ClassCheck()
040      {
041          return classCheckFlag;
042      }
043      
044      
045      int Exec(string sql)
046      {
047          int rc;
048  
049          // sqlÀ» ½ÇÇàÇÑ´Ù.
050          rc = sqlite3_prepare(mdb, sql.c_str(), sql.length(), &stmt, NULL);
051          if(rc != SQLITE_OK)
052          {
053              return 1;
054          }
055          return 0;
056      }
057      
058      vector<string> GetRows()
059      {
060          int rc;
061          int n;
062          int i;
063          char buf[80];
064          mRow.clear();
065  
066          // sqlite3_step·Î row µ¥ÀÌÅ͸¦ Çϳª¾¿ °¡Á®¿Â´Ù.
067          rc = sqlite3_step(stmt);
068          if(rc != SQLITE_DONE)
069          {
070              switch(rc)
071              {
072                  case SQLITE_BUSY:
073                      break;
074                  case SQLITE_ERROR:
075                      break;
076                  // row µ¥ÀÌÅ͸¦ °¡Á®¿Ô´Ù¸é
077                  // Ä÷³ µ¥ÀÌÅ͸¦ Àоî¿Â´Ù. 
078                  case SQLITE_ROW:
079                      n = sqlite3_column_count(stmt);
080                      for(i = 0; i < n ; i++)
081                      {
082                          switch(sqlite3_column_type(stmt, i))
083                          {
084                              case SQLITE_TEXT:
085                                  mRow.push_back((const char *)sqlite3_column_text(stmt, i));
086                                  break;
087                              case SQLITE_INTEGER:
088                                  sprintf(buf, "%d", sqlite3_column_int(stmt, i));
089                                  mRow.push_back(buf);
090                                  break;
091                              case SQLITE_FLOAT:
092                                  sprintf(buf, "%f", sqlite3_column_double(stmt, i));
093                                  mRow.push_back(buf);
094                                  break;
095                              case SQLITE_NULL:
096                                  mRow.push_back("");
097                                  break;
098                              default:
099                                  cout << "Unknown Field" << endl;
100                              break;
101                          }
102                      }
103                      break;
104                  case SQLITE_MISUSE:
105                      break;
106                  default:
107                      break;
108              }
109          }
110          else
111          {
112              cout << "SQL Exec Complete" << endl;
113          }
114          return mRow;
115      }
116      
117      void ExecFree()
118      {
119          sqlite3_finalize(stmt);
120      }
121   
122      int Exec(string sql, int (*callback)(void*,int,char**,char**))
123      {
124          int rc;
125          rc = sqlite3_exec(mdb, sql.c_str(), callback, 0, NULL);
126          if(rc != SQLITE_OK)
127          {
128              return 1; 
129          }
130          return 0; 
131      }
132  };
133  
134  int main()
135  {
136      vector<string> Row;
137      Sqlite mySql("test.db");
138      if(!mySql.ClassCheck())
139      {
140          return 1;
141      }
142  
143      mySql.Exec("select * from session");
144      int i;
145      for(;;)
146      {
147          Row = mySql.GetRows();
148          if(Row.size() > 0)
149          {
150              for(i = 0; i < Row.size(); i++)
151              {
152                  cout << Row[i] << "  ";
153              }
154              cout << endl;
155          }
156          else
157          {
158              break;
159          }
160      }
161      mySql.ExecFree();
162  }
163  

ÅÂ±× :

EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.