ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù. SQLite 3
2011³â 1¿ù ÇöÀç SQLite ÃֽйöÀüÀº 3.7.2 ÀÔ´Ï´Ù. ÀÌ ¹®¼´Â SQLite3¸¦ ±âÁØÀ¸·Î ÇÕ´Ï´Ù. SQLite2 ¹öÀü ¹®¼¸¦ º¸±â¸¦ ¿øÇÑ´Ù¸é SQLite ÇÁ·Î±×·¡¹Ö¹®¼¸¦ º¸½Ã¸é µË´Ï´Ù. ´Þ¶óÁø Á¡À̸§
SQLite2°ú À̸§±ÔÄ¢ÀÌ ´Þ¶óÁ³½À´Ï´Ù. sqlite2¿¡¼ sqlite_ÀÌ Á¢µÎ»ç·Î »ç¿ëµÇ´ø °ÍÀÌ sqlite3·Î ³Ñ¾î¿À¸é¼ sqlite3_·Î ¹Ù²¼½À´Ï´Ù. DB Çü½Ä
µ¥ÀÌÅÍ º£À̽º ÆÄÀÏ Çü½Äµµ ¹Ù²¼½À´Ï´Ù. ±×·¡¼ sqlite2¿¡¼ ¸¸µç µ¥ÀÌÅͺ£À̽º ÆÄÀÏÀº sqlite3¿¡¼ ÀÐÀ» ¼ö ¾ø½À´Ï´Ù. ¶§¹®¿¡ ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î µ¥ÀÌÅÍ º£À̽º¸¦ ¿Å°Ü¾ß ÇÕ´Ï´Ù. # sqlite OLD.db .dump | sqlite3 NEW.db Çì´õÆÄÀÏ
Çì´õÆÄÀϵµ sqlite.h¿¡¼ sqlite3.h·Î ¹Ù²¼½À´Ï´Ù. ¸µÅ©
-lsqlite ´ë½Å -lsqlite3¸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. 64-bit ROWID
sqlite´Â ¿£Áø¿¡¼ insert ·¹Äڵ忡 ¹°¸®ÀûÀÎ ÀÏ·Ã ¹øÈ£¸¦ ºÎ¿©ÇÕ´Ï´Ù. ÀϷùøÈ£¸¦ ºÎ¿©Çϱâ À§ÇÑ ¹æ¹ýÀ» °í¹ÎÇØ º¸½ÅÀûÀÌ ÀÖÀ» °Ì´Ï´Ù. rowid ´öºÐ¿¡ sqlite¿¡¼´Â À¯ÀÏÇÑ ÀϷùøÈ£¸¦ ¾ò±â À§ÇÑ °í¹ÎÀ» ÇÒ Çʿ䰡 ¾ø½À´Ï´Ù. Âü°í·Î ¸¸¾à Å×À̺íÀÇ Ä÷³À» INTEGER PRIMARY KEYÇü½ÄÀ¸·Î Çϸé rowid¸¦ °¡¸®Åµ´Ï´Ù.
ÀÌ Å©±â°¡ 32bit¿¡¼ 64bit·Î ¹Ù²¼½À´Ï´Ù. improved concurrency
sqlite2 ¹öÀüÀº µ¿½Ã¿¡ ¿©·¯ À¯Àú°¡ ÀÐÀ» ¼ö ÀÖµµ·Ï Çã¿ëÇßÀ¸³ª ¾²´Â °ÍÀº Çã¿ëÇÏÁö ¾Ê¾Ò½À´Ï´Ù. sqlite3´Â Àбâ¿Í ¾²±â ¸ðµÎ¿¡ µ¿½Ã Á¢±ÙÀ» Çã¿ëÇÕ´Ï´Ù. UTF-8°ú UTF-16 Áö¿ø
UTF-8°ú UTF-16 ¸ðµÎ¸¦ Áö¿øÇÑ´Ù´Â ±º¿ä. ÁÁÀº ¼¼»óÀÔ´Ï´Ù. ? ÇÁ·Î±×·¡¹Ö Çü½Äcallback È£Ãâ ¹æ½Ä
callback ÇÔ¼ö¸¦ È£ÃâÇϸé Á»´õ ½±°Ô ·¹Äڵ带 ´Ù·ê ¼ö ÀÖ½À´Ï´Ù. row¿Í column´ÜÀ§·Î µ¥ÀÌÅ͸¦ ó¸®ÇÑ´ÙÀ½¿¡ ÀÌ¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ callbackÀÇ ¸Å°³ º¯¼ö·Î ³Ñ°ÜÁֱ⠶§¹®ÀÔ´Ï´Ù. #include <stdio.h> #include <sqlite3.h> #include <unistd.h> #include <stdlib.h> #include <string> #include <iostream> static int callback(void *NotUsed, int argc, char **argv, char **azColName) { int i; for(i=0; i<argc; i++) { printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL"); } printf("\n"); return 0; } int main(int argc, char **argv) { int rc; sqlite3 *mdb; rc = sqlite3_open("test.db", &mdb); if(rc != SQLITE_OK) { return 1; } rc = sqlite3_exec(mdb, "select * from session", callback, 0, NULL); if(rc != SQLITE_OK) { return 1; } sqlite3_close(mdb); } Á÷Á¢ ´Ù·ç±â
ÄݹéÇÔ¼ö¸¦ È£ÃâÇÏ¸é °£´ÜÇÏ°Ô µ¥ÀÌÅ͸¦ ´Ù·ê ¼ö ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ static ÇÔ¼ö¸¦ È£ÃâÇϱ⠶§¹®¿¡, c++µî¿¡¼ Ãß»óÈ ´Ü°è¸¦ ¹âÀ¸·Á¸é ¾Ö·Î»çÇ×ÀÌ ²ÉÇÌ´Ï´Ù.
Àú´Â sqlite Ŭ·¡½º¸¦ ¸¸µé°í, µ¥ÀÌÅÍ º£À̽º¸¦ ÇÊ¿ä·Î ÇÏ´Â Çϴ Ŭ·¡½º´Â sqlite Ŭ·¡½º¸¦ »ó¼Ó¹Þ¾Æ¼ »ç¿ëÇÏ±æ ¿øÇß½À´Ï´Ù. ÀÌ °æ¿ì callback ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â °ÍÀº ÁÁÀº ¼±ÅÃÀÌ ¾Æ´Õ´Ï´Ù.
±×·¡¼ ³·Àº ¼öÁØ¿¡¼ Á÷Á¢ ´Ù·ç±â ¿øÇß½À´Ï´Ù.
#include <sqlite3.h>
#include <string.h>
#include <stdio.h>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Sqlite
{
private:
sqlite3 *mdb;
string mdbname;
sqlite3_stmt *stmt;
vector<string> mRow;
bool classCheckFlag;
public:
Sqlite(string adbname)
{
int rc;
classCheckFlag = false;
mdbname = adbname;
// DB ¿±â
rc = sqlite3_open(mdbname.c_str(), &mdb);
if(rc == SQLITE_OK)
{
classCheckFlag = true;
}
}
~Sqlite()
{
sqlite3_close(mdb);
}
bool ClassCheck()
{
return classCheckFlag;
}
int Exec(string sql)
{
int rc;
// sqlÀ» ½ÇÇàÇÑ´Ù.
rc = sqlite3_prepare(mdb, sql.c_str(), sql.length(), &stmt, NULL);
if(rc != SQLITE_OK)
{
return 1;
}
return 0;
}
vector<string> GetRows()
{
int rc;
int n;
int i;
char buf[80];
mRow.clear();
// sqlite3_step·Î row µ¥ÀÌÅ͸¦ Çϳª¾¿ °¡Á®¿Â´Ù.
rc = sqlite3_step(stmt);
if(rc != SQLITE_DONE)
{
switch(rc)
{
case SQLITE_BUSY:
break;
case SQLITE_ERROR:
break;
// row µ¥ÀÌÅ͸¦ °¡Á®¿Ô´Ù¸é
// Ä÷³ µ¥ÀÌÅ͸¦ Àоî¿Â´Ù.
// ±ÍÂú¾Æ¼ Ä÷³ ŸÀÔ¿¡ °ü°è ¾øÀÌ ÀüºÎ stringÀ¸·Î ³Ö¾î¹ö·È´Ù.
case SQLITE_ROW:
n = sqlite3_column_count(stmt);
for(i = 0; i < n ; i++)
{
switch(sqlite3_column_type(stmt, i))
{
case SQLITE_TEXT:
mRow.push_back((const char *)sqlite3_column_text(stmt, i));
break;
case SQLITE_INTEGER:
sprintf(buf, "%d", sqlite3_column_int(stmt, i));
mRow.push_back(buf);
break;
case SQLITE_FLOAT:
sprintf(buf, "%f", sqlite3_column_double(stmt, i));
mRow.push_back(buf);
break;
case SQLITE_NULL:
mRow.push_back("");
break;
default:
cout << "Unknown Field" << endl;
break;
}
}
break;
case SQLITE_MISUSE:
break;
default:
break;
}
}
else
{
cout << "SQL Exec Complete" << endl;
}
return mRow;
}
void ExecFree()
{
sqlite3_finalize(stmt);
}
int Exec(string sql, int (*callback)(void*,int,char**,char**))
{
int rc;
rc = sqlite3_exec(mdb, sql.c_str(), callback, 0, NULL);
if(rc != SQLITE_OK)
{
return 1;
}
return 0;
}
};
int main()
{
vector<string> Row;
Sqlite mySql("test.db");
if(!mySql.ClassCheck())
{
return 1;
}
mySql.Exec("select * from address");
int i;
for(;;)
{
Row = mySql.GetRows();
if(Row.size() > 0)
{
for(i = 0; i < Row.size(); i++)
{
cout << Row[i] << " ";
}
cout << endl;
}
else
{
break;
}
}
mySql.ExecFree();
}
![]() |
|
||
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|