ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
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
ÅÂ±× : sqlite3
|
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|