@@ -0,0 +1,553 @@
5+ * Created by Melissa Farinaz MOZIFIAN on 22/06/2012.
6+ * Copyright 2012. All rights reserved.
11+#include "sqlite3api.h"
15+static char sql_query_buffer[2000];
18+void* sqlite3_open_idr(const char *filename){
21+ int res =sqlite3_open(filename,&db);
23+ if(res != SQLITE_OK){
24+ printf("Error occured while opening the databse.");
27+ DBinfo *dbi = malloc(sizeof(DBinfo));
33+int sqlite3_close_idr(void* db){
35+ DBinfo* dbi =(DBinfo*) db;
36+ int res =sqlite3_close(dbi->db_ptr);
37+ if (res == SQLITE_OK){
39+ printf("Successfuly closed the databse\n");
43+ if(res == SQLITE_BUSY){
53+int sqlite3_exec_idr(void* db, const char *sql)
56+ DBinfo* dbi =(DBinfo*) db;
60+ rc = sqlite3_exec(dbi->db_ptr,sql,NULL, NULL, &err);
62+ if (rc != SQLITE_OK && err != NULL) {
63+ strncpy(dbi->buffer, err, sizeof(dbi->buffer));
70+char* sqlite3_get_error(void* db) {
71+ DBinfo* dbi =(DBinfo*) db;
75+void* sqlite3_prepare_idr(void *db,const char *zSql){
80+ DBinfo* dbi =(DBinfo*) db;
82+ int rec = sqlite3_prepare_v2(dbi->db_ptr,zSql,-1,&stmt,&tail);
84+ dbi ->Ptr_tail = tail;
86+ if(rec != SQLITE_OK){
93+void* sqlite3_get_table_idr(void* db,
96+ DBinfo* dbi =(DBinfo*) db;
99+ Table* tbl = malloc(sizeof(Table));
100+ tbl->database = dbi;
102+ int res = sqlite3_get_table(dbi->db_ptr,sql,&tbl->table_data,&tbl->num_row,&tbl->num_col,&err);
104+ int array_size = sizeof(&tbl->table_data);
106+ if( res != SQLITE_OK && err != NULL){
107+ strncpy(dbi->buffer, err, sizeof(dbi->buffer));
112+ tbl -> data_size = array_size;
119+ for( i=0; i< row; i++){
120+ for(j=0;j<col; j++){
121+ printf("%s\n", tbl->table_data[(i+1)*col +j]);
130+int sqlite3_get_num_row(void* p){
132+ Table* tbl =(Table*) p;
133+ int row_number =tbl->num_row;
139+int sqlite3_get_num_col(void* p){
141+ Table* tbl =(Table*) p;
142+ int col_number =tbl-> num_col;
147+int sqlite3_get_data_type(void* p,const char* tbl_name, int nRow, int nCol){
149+ DBinfo* dbi =(DBinfo*) p;
152+ int rc,i, val, counter;
153+ const char* char_int;
156+ strcpy(sql_query_buffer, "select * from ");
157+ strcat(sql_query_buffer, tbl_name);
159+ rc = sqlite3_prepare_v2(dbi->db_ptr, sql_query_buffer, -1, &stmt, &tail);
160+ if(rc != SQLITE_OK){
161+ fprintf(stderr, "SQL Prepare error\n");
164+ rc = sqlite3_step(stmt);
166+ while (rc == SQLITE_ROW && counter < nRow){
168+ rc = sqlite3_step(stmt);
173+ val =sqlite3_column_type(stmt, nCol);
174+ printf("Type : %d\n", val );
176+ rc =sqlite3_finalize(stmt);
177+ if( rc != SQLITE_OK){
178+ printf("Couldnt finalize:\n");
185+int sqlite3_get_val_int(void* p,const char* tbl_name, int nRow, int nCol){
188+ DBinfo* dbi =(DBinfo*) p;
191+ int rc,i, val, counter;
192+ const char* char_int;
195+ strcpy(sql_query_buffer, "select * from ");
196+ strcat(sql_query_buffer, tbl_name);
198+ rc = sqlite3_prepare_v2(dbi->db_ptr, sql_query_buffer, -1, &stmt, &tail);
199+ if(rc != SQLITE_OK){
200+ fprintf(stderr, "SQL Prepare error\n");
203+ rc = sqlite3_step(stmt);
205+ while (rc == SQLITE_ROW && counter < nRow){
207+ rc = sqlite3_step(stmt);
212+ val =sqlite3_column_int(stmt, nCol);
213+ printf("int_val : %d\n", val );
214+ rc =sqlite3_finalize(stmt);
215+ if( rc != SQLITE_OK){
216+ printf("Couldnt finalize:\n");
224+const unsigned char* sqlite3_get_val_text(void* p,const char* tbl_name,int nRow, int nCol){
227+ DBinfo* dbi =(DBinfo*) p;
230+ int rc,i, val, counter;
231+ const unsigned char* text_val;
234+ strcpy(sql_query_buffer, "select * from ");
235+ strcat(sql_query_buffer, tbl_name);
237+ rc = sqlite3_prepare_v2(dbi->db_ptr, sql_query_buffer, -1, &stmt, &tail);
238+ if(rc != SQLITE_OK){
239+ fprintf(stderr, "SQL Prepare error\n");
242+ rc = sqlite3_step(stmt);
244+ while (rc == SQLITE_ROW && counter < nRow){
246+ rc = sqlite3_step(stmt);
251+ array =(unsigned char *) malloc(1000*sizeof(char));
252+ text_val =sqlite3_column_text(stmt, nCol);
253+ memcpy(array, text_val, sizeof(text_val));
254+ printf("text_val : %s\n", text_val );
255+ rc =sqlite3_finalize(stmt);
256+ if( rc != SQLITE_OK){
257+ printf("Couldn't finalize.\n");
264+float sqlite3_get_float(void* p,const char* tbl_name, int nRow, int nCol){
266+ DBinfo* dbi =(DBinfo*) p;
269+ int rc,i, val, counter;
274+ strcpy(sql_query_buffer, "select * from ");
275+ strcat(sql_query_buffer, tbl_name);
277+ rc = sqlite3_prepare_v2(dbi->db_ptr, sql_query_buffer, -1, &stmt, &tail);
278+ if(rc != SQLITE_OK){
279+ fprintf(stderr, "SQL Prepare error\n");
282+ rc = sqlite3_step(stmt);
284+ while (rc == SQLITE_ROW && counter < nRow){
287+ rc = sqlite3_step(stmt);
291+ double_val =sqlite3_column_double(stmt, nCol);
292+ float float_val =(float)double_val;
293+ printf("float_val %f\n", float_val);
294+ rc =sqlite3_finalize(stmt);
295+ if( rc != SQLITE_OK){
296+ printf("Couldn't finalize.\n");
303+void sqlite3_free_table_idr(void* db){
304+ Table* tbl =(Table*) db;
305+ sqlite3_free_table(tbl->table_data);
310+int sqlite3_step_idr(void* db){
312+ DBinfo* dbi =(DBinfo*) db;
313+ int rc =sqlite3_step(dbi->ppStmt);
317+int sqlite3_bind_int_idr(void* p,int index, int val){
319+ DBinfo* dbi =(DBinfo*) p;
322+ printf("\nThe statement has %d wildcards\n", sqlite3_bind_parameter_count(dbi->ppStmt));
323+ rc =sqlite3_bind_int(dbi->ppStmt,index,val);
324+ if(rc != SQLITE_OK){
331+int sqlite3_bind_float_idr(void* p,int index, float val){
333+ DBinfo* dbi =(DBinfo*) p;
335+ double res =(float)val;
337+ rc =sqlite3_bind_double(dbi->ppStmt,index,res);
339+ if(rc != SQLITE_OK){
346+int sqlite3_bind_null_idr(void* p,int index){
348+ DBinfo* dbi =(DBinfo*) p;
350+ rc =sqlite3_bind_null(dbi->ppStmt,index);
351+ if(rc != SQLITE_OK){
358+int sqlite3_bind_text_idr(void* p,const char* text, int index,int length){
360+ DBinfo* dbi =(DBinfo*) p;
362+ rc =sqlite3_bind_text(dbi->ppStmt,index,text,length,SQLITE_STATIC);
363+ if(rc != SQLITE_OK){
370+int sqlite3_column_count_idr(void* db, const char* tbl_name){
371+ DBinfo* dbi =(DBinfo*) db;
376+ strcpy(sql_query_buffer, "select * from ");
377+ strcat(sql_query_buffer, tbl_name);
379+ rc = sqlite3_prepare_v2(dbi->db_ptr, sql_query_buffer, -1, &stmt, &tail);
380+ if(rc != SQLITE_OK){
381+ fprintf(stderr, "SQL Prepare error");
384+ printf("Prepare successful %d\n", rc);
386+ rc =sqlite3_column_count(stmt);
388+ fprintf(stderr, "SQL column count error\n");
391+ sqlite3_finalize(stmt);
393+ // rc = actual column count
398+int sqlite3_data_count_idr(void* db){
400+ DBinfo* dbi =(DBinfo*) db;
401+ int rc = sqlite3_data_count(dbi->ppStmt);
407+int sqlite3_finalize_idr(void* db){
409+ DBinfo* dbi=(DBinfo*) db;
410+ int rc =sqlite3_finalize(dbi->ppStmt);
414+int sqlite3_complete_idr(const char *sql){
416+ int rc = sqlite3_complete(sql);
421+int sqlite3_reset_idr(void* db){
423+ DBinfo* dbi=(DBinfo*) db;
424+ int rc = sqlite3_reset(dbi-> ppStmt);
429+const char *sqlite3_column_name_idr(void* db, int N){
431+ DBinfo* dbi=(DBinfo*) db;
432+ const char *name = sqlite3_column_name(dbi->ppStmt, N);
437+const char *sqlite3_column_decltype_idr(void* db,int n){
438+ DBinfo* dbi=(DBinfo*) db;
439+ const char *dectype = sqlite3_column_decltype(dbi->ppStmt, n);
446+int sqlite3_column_bytes_idr(void* db, int n){
448+ DBinfo* dbi=(DBinfo*) db;
449+ int res = sqlite3_column_bytes(dbi->ppStmt, n);
455+const void *sqlite3_column_blob_idr(void* db, int iCol){
456+ DBinfo* dbi=(DBinfo*) db;
457+ const void* data =sqlite3_column_blob(dbi-> ppStmt, iCol);
461+const unsigned char *sqlite3_column_text_idr(void* db, int iCol){
462+ DBinfo* dbi=(DBinfo*) db;
463+ const unsigned char* col_text =sqlite3_column_text(dbi->ppStmt, iCol);
468+int sqlite3_column_int_idr(void* db, int iCol){
469+ DBinfo* dbi=(DBinfo*) db;
470+ int res =sqlite3_column_int(dbi-> ppStmt, iCol);
476+void* sqlite3_backup_init_idr(void* pDest,
477+ const char *zDestName,
479+ const char *zSourceName
482+ DBinfo* dbi=(DBinfo*) pDest;
483+ DBbackup* dbi2=(DBbackup*) pSource;
485+ void* res = sqlite3_backup_init(dbi->db_ptr,zDestName,
486+ dbi2->source_ptr,zSourceName);
489+ printf("Error number in initializing backup : %d\n", sqlite3_errcode(dbi->db_ptr));
498+int sqlite3_backup_step_idr(void *backup, int nPage){
500+ DBbackup* dbi=(DBbackup*) backup;
501+ int res = sqlite3_backup_step(dbi->backup, nPage);
503+ if( res == SQLITE_OK){
504+ printf("Backup Success\n");
510+int sqlite3_backup_finish_idr(void *backup){
512+ DBbackup* dbi=(DBbackup*) backup;
513+ int res = sqlite3_backup_finish(dbi->backup);
519+int sqlite3_backup_remaining_idr(void *backup){
521+ DBbackup* dbi=(DBbackup*) backup;
522+ int res = sqlite3_backup_remaining(dbi->backup);
527+int sqlite3_backup_pagecount_idr(void *backup){
529+ DBbackup* dbi=(DBbackup*) backup;
530+ int res =sqlite3_backup_pagecount(dbi-> backup);
535+int sqlite3_value_bytes_idr(void* value){
537+ DBinfo* dbi=(DBinfo*) value;
538+ int res = sqlite3_value_bytes(dbi->value);
543+int sqlite3_value_bytes16_idr(void* value){
545+ DBinfo* dbi=(DBinfo*) value;
546+ int res =sqlite3_value_bytes16(dbi->value);