annotate deita/d_sqlite.c @ 206:240337164a80

[Seobeo] SSL should be used for large file as well lol.
author MrJuneJune <me@mrjunejune.com>
date Sun, 15 Feb 2026 11:41:53 -0800
parents ae6a88e6e484
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
75
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
1 #include "deita_internal.h"
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
2 #include <stdio.h>
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
3 #include <stdlib.h>
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
4 #include <string.h>
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
5
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
6 Deita_Connection* deita__sqlite_connection_create(const char *connection_string)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
7 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
8 Deita_Connection *p_connection = (Deita_Connection*)malloc(sizeof(Deita_Connection));
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
9 if (!p_connection)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
10 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
11 fprintf(stderr, "deita__sqlite_connection_create: Failed to allocate connection\n");
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
12 return NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
13 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
14
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
15 p_connection->database_type = DEITA_DATABASE_TYPE_SQLITE3;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
16 p_connection->native_handle = NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
17 p_connection->is_open = FALSE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
18
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
19 sqlite3 *p_db = NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
20 int32 result = sqlite3_open(connection_string, &p_db);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
21
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
22 if (result != SQLITE_OK)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
23 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
24 fprintf(stderr, "deita__sqlite_connection_create: Failed to open database: %s\n", sqlite3_errmsg(p_db));
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
25 sqlite3_close(p_db);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
26 free(p_connection);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
27 return NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
28 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
29
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
30 p_connection->native_handle = p_db;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
31 p_connection->is_open = TRUE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
32
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
33 return p_connection;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
34 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
35
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
36 void deita__sqlite_connection_close(Deita_Connection *p_connection)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
37 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
38 if (!p_connection)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
39 return;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
40
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
41 if (p_connection->native_handle)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
42 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
43 sqlite3 *p_db = (sqlite3*)p_connection->native_handle;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
44 sqlite3_close(p_db);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
45 p_connection->native_handle = NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
46 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
47
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
48 p_connection->is_open = FALSE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
49 free(p_connection);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
50 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
51
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
52 boolean deita__sqlite_connection_is_open(Deita_Connection *p_connection)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
53 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
54 if (!p_connection)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
55 return FALSE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
56
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
57 return p_connection->is_open;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
58 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
59
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
60 Deita_Result_Set* deita__sqlite_query_execute(
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
61 Deita_Connection *p_connection,
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
62 const char *query,
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
63 Dowa_Arena *p_arena)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
64 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
65 if (!p_connection || !p_connection->native_handle || !query)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
66 return NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
67
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
68 sqlite3 *p_db = (sqlite3*)p_connection->native_handle;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
69 sqlite3_stmt *p_stmt = NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
70
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
71 int32 result = sqlite3_prepare_v2(p_db, query, -1, &p_stmt, NULL);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
72 if (result != SQLITE_OK)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
73 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
74 fprintf(stderr, "deita__sqlite_query_execute: Failed to prepare statement: %s\n", sqlite3_errmsg(p_db));
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
75 return NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
76 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
77
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
78 Deita_Result_Set *p_result_set = (Deita_Result_Set*)Dowa_Arena_Allocate(p_arena, sizeof(Deita_Result_Set));
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
79 if (!p_result_set)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
80 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
81 fprintf(stderr, "deita__sqlite_query_execute: Failed to allocate result set\n");
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
82 sqlite3_finalize(p_stmt);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
83 return NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
84 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
85
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
86 p_result_set->database_type = DEITA_DATABASE_TYPE_SQLITE3;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
87 p_result_set->native_result = p_stmt;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
88 p_result_set->column_count = sqlite3_column_count(p_stmt);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
89 p_result_set->has_data = FALSE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
90 p_result_set->is_done = FALSE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
91
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
92 return p_result_set;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
93 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
94
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
95 Deita_Result_Set* deita__sqlite_query_execute_prepared(
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
96 Deita_Connection *p_connection,
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
97 const char *query,
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
98 int32 parameter_count,
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
99 const char **parameter_values,
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
100 Dowa_Arena *p_arena)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
101 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
102 if (!p_connection || !p_connection->native_handle || !query)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
103 return NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
104
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
105 sqlite3 *p_db = (sqlite3*)p_connection->native_handle;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
106 sqlite3_stmt *p_stmt = NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
107
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
108 int32 result = sqlite3_prepare_v2(p_db, query, -1, &p_stmt, NULL);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
109 if (result != SQLITE_OK)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
110 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
111 fprintf(stderr, "deita__sqlite_query_execute_prepared: Failed to prepare statement: %s\n", sqlite3_errmsg(p_db));
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
112 return NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
113 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
114
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
115 for (int32 i = 0; i < parameter_count; i++)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
116 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
117 result = sqlite3_bind_text(p_stmt, i + 1, parameter_values[i], -1, SQLITE_TRANSIENT);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
118 if (result != SQLITE_OK)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
119 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
120 fprintf(stderr, "deita__sqlite_query_execute_prepared: Failed to bind parameter %d: %s\n", i, sqlite3_errmsg(p_db));
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
121 sqlite3_finalize(p_stmt);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
122 return NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
123 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
124 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
125
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
126 Deita_Result_Set *p_result_set = (Deita_Result_Set*)Dowa_Arena_Allocate(p_arena, sizeof(Deita_Result_Set));
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
127 if (!p_result_set)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
128 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
129 fprintf(stderr, "deita__sqlite_query_execute_prepared: Failed to allocate result set\n");
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
130 sqlite3_finalize(p_stmt);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
131 return NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
132 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
133
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
134 p_result_set->database_type = DEITA_DATABASE_TYPE_SQLITE3;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
135 p_result_set->native_result = p_stmt;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
136 p_result_set->column_count = sqlite3_column_count(p_stmt);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
137 p_result_set->has_data = FALSE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
138 p_result_set->is_done = FALSE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
139
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
140 return p_result_set;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
141 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
142
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
143 int32 deita__sqlite_query_execute_update(
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
144 Deita_Connection *p_connection,
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
145 const char *query)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
146 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
147 if (!p_connection || !p_connection->native_handle || !query)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
148 return -1;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
149
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
150 sqlite3 *p_db = (sqlite3*)p_connection->native_handle;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
151 char *error_message = NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
152
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
153 int32 result = sqlite3_exec(p_db, query, NULL, NULL, &error_message);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
154 if (result != SQLITE_OK)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
155 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
156 fprintf(stderr, "deita__sqlite_query_execute_update: Failed to execute: %s\n", error_message);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
157 sqlite3_free(error_message);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
158 return -1;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
159 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
160
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
161 return sqlite3_changes(p_db);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
162 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
163
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
164 int32 deita__sqlite_query_execute_update_prepared(
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
165 Deita_Connection *p_connection,
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
166 const char *query,
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
167 int32 parameter_count,
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
168 const char **parameter_values)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
169 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
170 if (!p_connection || !p_connection->native_handle || !query)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
171 return -1;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
172
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
173 sqlite3 *p_db = (sqlite3*)p_connection->native_handle;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
174 sqlite3_stmt *p_stmt = NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
175
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
176 int32 result = sqlite3_prepare_v2(p_db, query, -1, &p_stmt, NULL);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
177 if (result != SQLITE_OK)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
178 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
179 fprintf(stderr, "deita__sqlite_query_execute_update_prepared: Failed to prepare statement: %s\n", sqlite3_errmsg(p_db));
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
180 return -1;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
181 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
182
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
183 for (int32 i = 0; i < parameter_count; i++)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
184 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
185 result = sqlite3_bind_text(p_stmt, i + 1, parameter_values[i], -1, SQLITE_TRANSIENT);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
186 if (result != SQLITE_OK)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
187 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
188 fprintf(stderr, "deita__sqlite_query_execute_update_prepared: Failed to bind parameter %d: %s\n", i, sqlite3_errmsg(p_db));
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
189 sqlite3_finalize(p_stmt);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
190 return -1;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
191 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
192 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
193
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
194 result = sqlite3_step(p_stmt);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
195 if (result != SQLITE_DONE)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
196 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
197 fprintf(stderr, "deita__sqlite_query_execute_update_prepared: Failed to execute: %s\n", sqlite3_errmsg(p_db));
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
198 sqlite3_finalize(p_stmt);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
199 return -1;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
200 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
201
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
202 int32 changes = sqlite3_changes(p_db);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
203 sqlite3_finalize(p_stmt);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
204
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
205 return changes;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
206 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
207
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
208 boolean deita__sqlite_result_set_next(Deita_Result_Set *p_result_set)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
209 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
210 if (!p_result_set || !p_result_set->native_result || p_result_set->is_done)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
211 return FALSE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
212
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
213 sqlite3_stmt *p_stmt = (sqlite3_stmt*)p_result_set->native_result;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
214 int32 result = sqlite3_step(p_stmt);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
215
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
216 if (result == SQLITE_ROW)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
217 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
218 p_result_set->has_data = TRUE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
219 return TRUE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
220 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
221 else if (result == SQLITE_DONE)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
222 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
223 p_result_set->has_data = FALSE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
224 p_result_set->is_done = TRUE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
225 return FALSE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
226 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
227 else
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
228 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
229 fprintf(stderr, "deita__sqlite_result_set_next: Error stepping through results\n");
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
230 p_result_set->has_data = FALSE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
231 p_result_set->is_done = TRUE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
232 return FALSE;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
233 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
234 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
235
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
236 int32 deita__sqlite_result_set_get_column_count(Deita_Result_Set *p_result_set)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
237 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
238 if (!p_result_set)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
239 return 0;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
240
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
241 return p_result_set->column_count;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
242 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
243
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
244 const char* deita__sqlite_result_set_get_column_name(
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
245 Deita_Result_Set *p_result_set,
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
246 int32 column_index)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
247 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
248 if (!p_result_set || !p_result_set->native_result)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
249 return NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
250
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
251 sqlite3_stmt *p_stmt = (sqlite3_stmt*)p_result_set->native_result;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
252 return sqlite3_column_name(p_stmt, column_index);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
253 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
254
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
255 Deita_Column_Type deita__sqlite_result_set_get_column_type(
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
256 Deita_Result_Set *p_result_set,
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
257 int32 column_index)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
258 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
259 if (!p_result_set || !p_result_set->native_result)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
260 return DEITA_COLUMN_TYPE_NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
261
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
262 sqlite3_stmt *p_stmt = (sqlite3_stmt*)p_result_set->native_result;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
263 int32 sqlite_type = sqlite3_column_type(p_stmt, column_index);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
264
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
265 switch (sqlite_type)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
266 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
267 case SQLITE_INTEGER:
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
268 return DEITA_COLUMN_TYPE_INTEGER;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
269 case SQLITE_FLOAT:
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
270 return DEITA_COLUMN_TYPE_REAL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
271 case SQLITE_TEXT:
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
272 return DEITA_COLUMN_TYPE_TEXT;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
273 case SQLITE_BLOB:
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
274 return DEITA_COLUMN_TYPE_BLOB;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
275 case SQLITE_NULL:
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
276 default:
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
277 return DEITA_COLUMN_TYPE_NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
278 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
279 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
280
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
281 const char* deita__sqlite_result_set_get_text(
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
282 Deita_Result_Set *p_result_set,
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
283 int32 column_index)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
284 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
285 if (!p_result_set || !p_result_set->native_result)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
286 return NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
287
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
288 sqlite3_stmt *p_stmt = (sqlite3_stmt*)p_result_set->native_result;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
289 const unsigned char *text = sqlite3_column_text(p_stmt, column_index);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
290
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
291 return (const char*)text;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
292 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
293
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
294 int64 deita__sqlite_result_set_get_integer(
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
295 Deita_Result_Set *p_result_set,
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
296 int32 column_index)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
297 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
298 if (!p_result_set || !p_result_set->native_result)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
299 return 0;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
300
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
301 sqlite3_stmt *p_stmt = (sqlite3_stmt*)p_result_set->native_result;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
302 return sqlite3_column_int64(p_stmt, column_index);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
303 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
304
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
305 double deita__sqlite_result_set_get_real(
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
306 Deita_Result_Set *p_result_set,
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
307 int32 column_index)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
308 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
309 if (!p_result_set || !p_result_set->native_result)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
310 return 0.0;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
311
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
312 sqlite3_stmt *p_stmt = (sqlite3_stmt*)p_result_set->native_result;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
313 return sqlite3_column_double(p_stmt, column_index);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
314 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
315
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
316 void deita__sqlite_result_set_free(Deita_Result_Set *p_result_set)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
317 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
318 if (!p_result_set)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
319 return;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
320
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
321 if (p_result_set->native_result)
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
322 {
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
323 sqlite3_stmt *p_stmt = (sqlite3_stmt*)p_result_set->native_result;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
324 sqlite3_finalize(p_stmt);
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
325 p_result_set->native_result = NULL;
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
326 }
ae6a88e6e484 [Deita] Simple DB connection lib.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
327 }