version 0.0.1
[fms.git] / src / db / sqlite3recordset.cpp
1 #include "../../include/db/sqlite3db/sqlite3recordset.h"\r
2 \r
3 #ifdef XMEM\r
4         #include <xmem.h>\r
5 #endif\r
6 \r
7 namespace SQLite3DB\r
8 {\r
9 \r
10 Recordset::Recordset()\r
11 {\r
12         m_rs=NULL;\r
13         m_rows=0;\r
14         m_cols=0;\r
15         m_currentrow=0;\r
16 }\r
17 \r
18 Recordset::Recordset(char **rs, int rows, int cols)\r
19 {\r
20         m_rs=rs;\r
21         m_rows=rows;\r
22         m_cols=cols;\r
23         m_currentrow=0;\r
24 }\r
25 \r
26 Recordset::~Recordset()\r
27 {\r
28         Free();\r
29 }\r
30 \r
31 const char *Recordset::Get(const int row, const int field)\r
32 {\r
33         if(row>=0 && row<m_rows && field>=0 && field<m_cols)\r
34         {\r
35                 return m_rs[m_cols+(m_cols*row)+field];\r
36         }\r
37         else\r
38         {\r
39                 return NULL;\r
40         }\r
41 }\r
42 \r
43 const double Recordset::GetDouble(const int field)\r
44 {\r
45         const char *result=GetField(field);\r
46         if(result)\r
47         {\r
48                 return atof(result);\r
49         }\r
50         else\r
51         {\r
52                 return 0;\r
53         }\r
54 }\r
55 \r
56 const char *Recordset::GetField(const int field)\r
57 {\r
58         return Get(m_currentrow,field);\r
59 }\r
60 \r
61 const int Recordset::GetInt(const int field)\r
62 {\r
63         const char *result=GetField(field);\r
64         if(result)\r
65         {\r
66                 return atoi(result);\r
67         }\r
68         else\r
69         {\r
70                 return 0;\r
71         }\r
72 }\r
73 \r
74 void Recordset::Open(const std::string &sql, DB *db)\r
75 {\r
76         Free();\r
77         m_currentrow=0;\r
78 \r
79         ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
80         if(sqlite3_get_table(db->GetDB(),sql.c_str(),&m_rs,&m_rows,&m_cols,NULL)==SQLITE_OK)\r
81         {\r
82         }\r
83 }\r
84 \r
85 }       // namespace\r