on master help sign in
latest
commit5ebf30ef0bcc400c1b6138946e85f26184318c90 authormelissam <mfm6@st-andrews.ac.uk> dateWed 18 Jul 2012, 15:04 (14 years ago) parent9e59751
3 files changed+4−100
contribs/lib/SQLite3/sqlite3.c−97 contribs/lib/SQLite3/sqlite3api.c+3−3 contribs/lib/SQLite3/sqlite3api.h+1
contribs/lib/SQLite3/sqlite3.cdeleted−97
@@ -1,97 +0,0 @@
1−#include <stdio.h>
2−#include <string.h>
3−#include <sqlite3.h>
4−
5−sqlite3* db; // pointer to the database
6−
7−int first_row;
8−
9−int select_callback(void *p_data, int num_fields, char **p_fields, char **p_col_names) {
10−
11− int i; // counter
12− int *p_rn =(int*)p_data; // pointer counter
13−
14− if(first_row) {
15− first_row=0;
16− // Go through the columns
17− for(int i=0; i<num_fields; i++){
18− printf("%20s", p_col_names[i]);
19− }
20− printf("\n");
21− for(i=0; i<num_fields; i++){
22− printf("=");
23− }
24− printf("\n");
25− }
26− (*p_rn)++; // increment the pointer counter for column
27−
28−
29− for(i=0; i< num_fields; i++){
30− printf("%20s", p_fields[i]);
31− }
32− printf("\n");
33− return 0;
34−}
35−void select_stmt(const char* stmt){
36− char *errmsg; // erro
37− int ret; // return code
38− int nrecs =0; // return code 0 for successful
39−
40− first_row =1;
41−
42− // open database, SQL to be evaluated, call back function, 1st argument to call back ,err
43− ret = sqlite3_exec(db, stmt, select_callback, &nrecs, &errmsg);
44− if(ret !=SQLITE_OK){
45− printf("Error in select statement %s [%s].\n", stmt, errmsg);
46− }
47− else{
48− printf("\n %d records returned.\n", nrecs);
49− }
50−}
51−
52−void sql_stmt(const char* stmt){
53−
54− char *errmsg;
55− int ret;
56− ret = sqlite3_exec(db, stmt, 0, 0, &errmsg);
57−
58− if(ret !=SQLITE_OK){
59− printf("Error in select statement %s [%s].\n", stmt, errmsg);
60− }
61−}
62−
63−
64−void insert(){
65− sql_stmt("begin");
66− sql_stmt("insert into Student values ('Alice','Peterson',1234551,'Medicine',12)");
67− //sql_stmt("insert into mytable values ('mytable2' , 251826, 22660136)");
68− //sql_stmt("insert into mytable values ('mytable3' , 271826, 22684136)");
69− sql_stmt("commit");
70−}
71−
72−int main(){
73− sqlite3_open("./students.db", &db);
74−
75− if(db ==0 ){
76− printf("Could not open the database");
77− return 1;
78− }
79−
80− //sql_stmt("Create table Student (Name, Surname, Passport ,School, School Student)");
81− //insert();
82−// select_stmt("Select *from Student;");
83−// select_stmt("Select *from Module;");
84−// select_stmt("Select *from Enrollment;");
85− select_stmt("SELECT student.name FROM student, module, enrollment WHERE module.credits = 30 AND student.school_student = enrollment.school_student AND student.school = enrollment.school AND enrollment.code = module.code");
86−
87−
88− sqlite3_close(db);
89− return 0;
90−}
91−
92−
93−
94−
95−
96−
97−
contribs/lib/SQLite3/sqlite3api.c+3−3
@@ -247,9 +247,9 @@ const unsigned char* sqlite3_get_val_text(void* p,const char* tbl_name,int nRow,
247247
248248 }
249249
250− for ( i=0; i< 100000000; i++){
251− array =(unsigned char *) GC_malloc(1000*sizeof(char));
252− }
250+
251+ array =(unsigned char *) GC_malloc(1000*sizeof(char));
252+
253253 text_val =sqlite3_column_text(stmt, nCol);
254254 memcpy(array, text_val, sizeof(text_val));
255255 rc =sqlite3_finalize(stmt);
contribs/lib/SQLite3/sqlite3api.h+1
@@ -11,6 +11,7 @@
1111#include <string.h>
1212#include <sqlite3.h>
1313#include <ctype.h>
14+#include <gc.h>
1415
1516typedef struct {
1617 sqlite3 *db_ptr;