on master help sign in
added multiBind
eda4990melissam
contribs/lib/SQLite3/._sqlexpr.idr

Binary file not shown.

contribs/lib/SQLite3/._sqlite3.idr

Binary file not shown.

contribs/lib/SQLite3/._sqlite3api.c

Binary file not shown.

contribs/lib/SQLite3/._sqlite3api.h

Binary file not shown.

contribs/lib/SQLite3/sqlexpr.idr+27−25
@@ -7,7 +7,9 @@ import prelude.list
7
7
8data Value = VInt Int
8data Value = VInt Int
9 |VStr String
9 |VStr String
10+ |VFloat Float
10 |VCol String
11 |VCol String
12+
11
13
12data Cond = Equals Value Value
14data Cond = Equals Value Value
13 |MkGT Value Value
15 |MkGT Value Value
@@ -30,7 +32,7 @@ data SQL = SELECT SelVar SQL Clause
30 | TBL String
32 | TBL String
31 | INSERT SQL (List Value)
33 | INSERT SQL (List Value)
32
34
33−
35+-- remember to remove these funcs later
34foldr1 : (a -> a -> a) -> List a -> a
36foldr1 : (a -> a -> a) -> List a -> a
35foldr1 f [x] = x
37foldr1 f [x] = x
36foldr1 f (x::xs) = f x (foldr1 f xs)
38foldr1 f (x::xs) = f x (foldr1 f xs)
@@ -58,13 +60,14 @@ popintoList (Just x) [] = [(Just x)]
58popintoList (Just (x)) ((Just x) :: xs) = (popintoList (Just x) xs)
60popintoList (Just (x)) ((Just x) :: xs) = (popintoList (Just x) xs)
59popintoList Nothing [] = []
61popintoList Nothing [] = []
60
62
61−valString : List (Maybe Value) -> Value -> (String, List (Maybe Value))
63+valString : List (Maybe(Int, Value)) -> Value -> (String, List (Maybe(Int, Value)))
62−valString xs (VInt x) = ("?", xs ++ [Just (VInt x)])
64+valString xs (VInt x) = ("?" ++ show (cast(length xs)+1), xs ++ [Just (cast((length xs)+1),(VInt x))])
63−valString xs (VStr x) = ("?", xs ++ [Just (VStr x)])
65+valString xs (VStr x) = ("?" ++ show (cast(length xs)+1), xs ++ [Just (cast((length xs)+1),(VStr x))])
66+valString xs (VFloat x) = ("?" ++ show (cast(length xs)+1), xs ++ [Just (cast((length xs)+1),(VFloat x))])
64−valString xs (VCol n) = (n, xs)
67+valString xs (VCol n) = (n, xs)
65
68
66
69
67−evalCond : List (Maybe Value) -> Cond -> (String, List (Maybe Value))
70+evalCond : List (Maybe(Int, Value)) -> Cond -> (String, List (Maybe(Int, Value)))
68evalCond xs (Equals val1 val2) = let (restring , newxs ) = valString xs val1 in
71evalCond xs (Equals val1 val2) = let (restring , newxs ) = valString xs val1 in
69 let (restring2, newxs') = valString newxs val2 in
72 let (restring2, newxs') = valString newxs val2 in
70 (restring ++ " = " ++ restring2, (newxs ++ newxs'))
73 (restring ++ " = " ++ restring2, (newxs ++ newxs'))
@@ -86,7 +89,7 @@ evalCond xs (MkLTE val1 val2) = let (restring , newxs ) = valString xs val1 in
86 (restring ++ " =< " ++ restring2, (newxs ++ newxs'))
89 (restring ++ " =< " ++ restring2, (newxs ++ newxs'))
87
90
88
91
89−clauseString : List (Maybe Value) -> Clause -> (String, List (Maybe Value))
92+clauseString : List (Maybe(Int, Value)) -> Clause -> (String, List (Maybe(Int, Value)))
90clauseString xs (Empty) = ("" , []) -- No condition
93clauseString xs (Empty) = ("" , []) -- No condition
91clauseString xs (MkCond cond') = let (condstr, newxs) = evalCond xs cond' in
94clauseString xs (MkCond cond') = let (condstr, newxs) = evalCond xs cond' in
92 (condstr , newxs)
95 (condstr , newxs)
@@ -98,35 +101,34 @@ clauseString xs (AND c1 c2) = let (clausestr, newxs) = clauseString xs c1 in
98clauseString xs (OR c1 c2) = let (clausestr, newxs) = clauseString xs c1 in
101clauseString xs (OR c1 c2) = let (clausestr, newxs) = clauseString xs c1 in
99 let (clausestr2, newxs') = clauseString newxs c2 in
102 let (clausestr2, newxs') = clauseString newxs c2 in
100 (clausestr ++ " OR " ++clausestr2 , newxs')
103 (clausestr ++ " OR " ++clausestr2 , newxs')
101−
104+
102−
103−varString : List String -> String
104−varString xs = (unwords xs)
105−
106
105
107−evalSQL : List (Maybe Value) -> SQL -> ( String, List (Maybe Value))
106+evalSQL : List (Maybe(Int, Value)) -> SQL -> ( String, List (Maybe(Int, Value)))
108evalSQL xs (TBL tbl) = (tbl, xs)
107evalSQL xs (TBL tbl) = (tbl, xs)
109evalSQL xs (SELECT vars sql' c) = let (sqlstring, newxs) = evalSQL xs sql' in
108evalSQL xs (SELECT vars sql' c) = let (sqlstring, newxs) = evalSQL xs sql' in
110 let (csstring, newxs') = clauseString newxs c in
109 let (csstring, newxs') = clauseString newxs c in
111 case c of
110 case c of
112 Empty => case vars of
111 Empty => case vars of
113− (ALL ) => ("SELECT " ++ "*" ++ " FROM (" ++ sqlstring ++ ") " ++ csstring, map snd ( mapping 0 newxs'))
112+ (ALL ) => ("SELECT " ++ "*" ++ " FROM (" ++ sqlstring ++ ") " ++ csstring, newxs')
114− (Cols selvar) => ("SELECT " ++ unwords ( intersperse "" ( selvar ++ (words ( " FROM (" ++ sqlstring ++ ")")))) ++ csstring, map snd ( mapping 0 newxs'))
113+ (Cols selvar) => ("SELECT " ++ unwords ( intersperse "" ( selvar ++ (words ( " FROM (" ++ sqlstring ++ ")")))) ++ csstring, newxs')
115
114
116 _ => case vars of
115 _ => case vars of
117− (ALL ) => ("SELECT " ++ "*" ++ " FROM (" ++ sqlstring ++ ") " ++ "WHERE" ++ csstring, map snd ( mapping 0 newxs'))
116+ (ALL ) => ("SELECT " ++ "*" ++ " FROM (" ++ sqlstring ++ ") " ++ "WHERE " ++ csstring, newxs')
118− (Cols selvar) => ("SELECT " ++ unwords ( intersperse "" ( selvar ++ (words ( " FROM (" ++ sqlstring ++ ")")))) ++ "WHERE" ++ csstring, map snd ( mapping 0 newxs'))
117+ (Cols selvar) => ("SELECT " ++ unwords ( intersperse "" ( selvar ++ (words ( " FROM (" ++ sqlstring ++ ")")))) ++ "WHERE" ++ csstring, newxs')
118+
119
119
120+display : (String, List (Maybe(Int, Value))) -> String
121+display (x, (xs)) = x
120
122
121−display : (String, List (Maybe Value)) -> String
123+getlist : (String, List (Maybe(Int, Value))) -> List (Maybe(Int, Value))
122−display (x, (xs)) = show x
124+getlist (x, (xs)) = xs
123
125
124−evalSQL2 : List (Maybe Value) -> String -> (String, List (Maybe Value))
126+--evalSQL2 : List (Maybe Value) -> String -> (String, List (Maybe Value))
125−evalSQL2 [] sql = (sql, [])
127+--evalSQL2 [] sql = (sql, [])
126−evalSQL2 ((Just (VInt x)) :: xs) sql = let ("string" , newxs) = evalSQL2 xs sql in
128+--evalSQL2 ((Just (VInt x)) :: xs) sql = let ("string" , newxs) = evalSQL2 xs sql in
127− ("string" ++ sql , Just (VInt x) :: newxs)
129+-- ("string" ++ sql , Just (VInt x) :: newxs)
128
130
129−main : IO ()
131+--main : IO ()
130−main = print (display(evalSQL [] ((SELECT ALL)(TBL "tbl") (MkCond (Equals (VCol "col")(VInt 1))))))
132+--main = (display(evalSQL [] ((SELECT ALL)(TBL "tbl") (MkCond (Equals (VCol "col")(VInt 1))))))
131
133
132
134
contribs/lib/SQLite3/sqlite3.idr+72−48
@@ -56,13 +56,18 @@ runDB (MkDB f) = do f' <- f
56 Left str => ioError str
56 Left str => ioError str
57
57
58
58
59−
60−open_db : String -> IO DBPointer
59+open_db : String -> DB DBPointer
61−open_db name = do x <- mkForeign (FFun "sqlite3_open_idr" [FString] FPtr)name
60+open_db name = do x <- liftIO(mkForeign (FFun "sqlite3_open_idr" [FString] FPtr) name)
62 return (MkDBPointer x)
61 return (MkDBPointer x)
63
62
64−close_db : DBPointer -> IO Int
63+close_db : DBPointer -> DB Int
65−close_db (MkDBPointer pointer) =mkForeign (FFun "sqlite3_close_idr" [FPtr] FInt)pointer
64+close_db (MkDBPointer pointer) = liftIO (mkForeign (FFun "sqlite3_close_idr" [FPtr] FInt)pointer)
65+--close_db pointer = liftIO ((runDB pointer) >>= mkForeign (FFun "sqlite3_close_idr" [FPtr] FInt) )
66+--close_db pointer = liftIO (do
67+-- (MkDBPointer ptr) <- (runDB pointer)
68+-- i <- mkForeign (FFun "sqlite3_close_idr" [FPtr] FInt) ptr
69+-- return i)
70+
66
71
67
72
68exec_db : DBPointer -> String -> DB Int
73exec_db : DBPointer -> String -> DB Int
@@ -80,8 +85,7 @@ get_error (MkDBPointer pointer) =mkForeign (FFun "sqlite3_get_error" [FPtr] FStr
80
85
81prepare_db : DBPointer -> String -> DB StmtPtr
86prepare_db : DBPointer -> String -> DB StmtPtr
82prepare_db (MkDBPointer pointer) cmd = do
87prepare_db (MkDBPointer pointer) cmd = do
83−
84− result <- liftIO (mkForeign (FFun "sqlite3_prepare_idr" [FPtr, FString] FPtr)pointer cmd)
88+ result <- liftIO(mkForeign (FFun "sqlite3_prepare_idr" [FPtr, FString] FPtr)pointer cmd)
85 flag <- liftIO(nullPtr result)
89 flag <- liftIO(nullPtr result)
86 if flag
90 if flag
87 then fail "Error occured while preparing"
91 then fail "Error occured while preparing"
@@ -89,13 +93,13 @@ prepare_db (MkDBPointer pointer) cmd = do
89
93
90exec_db_v2 : StmtPtr -> DB Int
94exec_db_v2 : StmtPtr -> DB Int
91exec_db_v2 (MkStmtPtr pointer) = do
95exec_db_v2 (MkStmtPtr pointer) = do
92− x <- liftIO(mkForeign (FFun "exec_db" [FPtr] FInt)pointer)
96+ x <- liftIO (mkForeign (FFun "exec_db" [FPtr] FInt) pointer)
93 if (x == 21)
97 if (x == 21)
94 then fail "No data returned."
98 then fail "No data returned."
95 else return x
99 else return x
96
100
97step_db : StmtPtr -> DB Int
101step_db : StmtPtr -> DB Int
98−step_db (MkStmtPtr pointer) = do
102+step_db (MkStmtPtr pointer)= do
99 x <- liftIO (mkForeign (FFun "sqlite3_step_idr" [FPtr] FInt)pointer)
103 x <- liftIO (mkForeign (FFun "sqlite3_step_idr" [FPtr] FInt)pointer)
100 if ( x == 101)
104 if ( x == 101)
101 then fail "SQLITE_DONE"
105 then fail "SQLITE_DONE"
@@ -277,35 +281,47 @@ toList name stmt x = do
277 liftIO (free_table ptr)
281 liftIO (free_table ptr)
278 return res
282 return res
279
283
280−bind_int : StmtPtr -> Int -> Int -> DB Int
284+--bind_int : StmtPtr -> Int -> Int -> DB Int
281−bind_int (MkStmtPtr pointer) indexval val = do
285+--bind_int (MkStmtPtr pointer) indexval val = do
282− x <- liftIO(mkForeign (FFun "sqlite3_bind_int_idr" [FPtr, FInt, FInt] FInt)pointer indexval val)
286+-- x <- liftIO(mkForeign (FFun "sqlite3_bind_int_idr" [FPtr, FInt, FInt] FInt)pointer indexval val)
283− if (x /= 0 )
287+-- if (x /= 0 )
288+-- then fail "Could not bind int."
289+-- else return x
290+
291+bind_int : StmtPtr -> Int -> Int -> DB StmtPtr
292+bind_int (MkStmtPtr pointer) indexval val = do
293+ x <- liftIO(mkForeign (FFun "sqlite3_bind_int_idr" [FPtr, FInt, FInt] FPtr)pointer indexval val)
294+ flag <- liftIO(nullPtr x)
295+ if flag
284 then fail "Could not bind int."
296 then fail "Could not bind int."
285− else return x
297+ else return (MkStmtPtr x)
286−
298+
287
299
288−bind_float : StmtPtr -> Int -> Int -> DB Int
300+bind_float : StmtPtr -> Int -> Float -> DB StmtPtr
289bind_float (MkStmtPtr pointer) indexval val = do
301bind_float (MkStmtPtr pointer) indexval val = do
290− x <- liftIO(mkForeign (FFun "sqlite3_bind_float_idr" [FPtr, FInt, FInt] FInt)pointer indexval val)
302+ x <- liftIO(mkForeign (FFun "sqlite3_bind_float_idr" [FPtr, FInt, FFloat] FPtr)pointer indexval val)
303+ flag <- liftIO(nullPtr x)
291− if (x /= 0)
304+ if flag
292 then fail "Could not bind float."
305 then fail "Could not bind float."
293− else return x
306+ else return (MkStmtPtr x)
294
307
295−bind_text : StmtPtr -> String -> Int -> Int -> DB Int
308+bind_text : StmtPtr -> String -> Int -> Int -> DB StmtPtr
296bind_text (MkStmtPtr pointer) text indexval lengthval = do
309bind_text (MkStmtPtr pointer) text indexval lengthval = do
297− x <- liftIO(mkForeign (FFun "sqlite3_bind_text_idr" [FPtr, FString, FInt, FInt] FInt)pointer text indexval lengthval)
310+ x <- liftIO(mkForeign (FFun "sqlite3_bind_text_idr" [FPtr, FString, FInt, FInt] FPtr)pointer text indexval lengthval)
311+ flag <- liftIO(nullPtr x)
298− if (x /= 0)
312+ if flag
299 then fail "Could not bind text."
313 then fail "Could not bind text."
300− else return x
314+ else return (MkStmtPtr x)
301−
315+
302−bind_null : StmtPtr -> Int -> DB Int
316+--bind_null : StmtPtr -> Int -> DB StmtPtr
303−bind_null (MkStmtPtr pointer) indexval =do
317+--bind_null (MkStmtPtr pointer) indexval =do
304− x <- liftIO(mkForeign (FFun "sqlite3_bind_null_idr" [FPtr, FInt] FInt)pointer indexval)
318+-- x <- liftIO(mkForeign (FFun "sqlite3_bind_null_idr" [FPtr, FInt] FInt)pointer indexval)
305− if (x /= 0)
319+-- if (x /= 0)
306− then fail "Could not bind null."
320+-- then fail "Could not bind null."
307− else return x
321+-- else return x
308
322
323+strlen : String -> DB Int
324+strlen str = liftIO(mkForeign (FFun "strLength" [FString] FInt) str)
309
325
310instance Show DBVal where
326instance Show DBVal where
311 show (DBInt i) = "Int val: " ++ show i ++ "\n"
327 show (DBInt i) = "Int val: " ++ show i ++ "\n"
@@ -316,47 +332,55 @@ instance Show DBVal where
316print_data_v2 : DBVal -> String
332print_data_v2 : DBVal -> String
317print_data_v2 = show
333print_data_v2 = show
318
334
319−test : DB()
335+test : DB ()
320−test = do db <- liftIO (open_db "somedb.db")
336+test = do db <- open_db "somedb.db"
321 stmt <- (prepare_db db "insert into tbl1 values (?,?);")
337 stmt <- (prepare_db db "insert into tbl1 values (?,?);")
322 bind_int stmt 1 456
338 bind_int stmt 1 456
323 bind_text stmt "testing" 2 4
339 bind_text stmt "testing" 2 4
324 step_db stmt
340 step_db stmt
325 reset_db stmt
341 reset_db stmt
326 finalize_db stmt
342 finalize_db stmt
327− c <- liftIO (close_db db)
343+ c <- close_db db
328 return ()
344 return ()
329
345
330test3 : DB()
346test3 : DB()
331−test3 = do db <- liftIO (open_db "students.db")
347+test3 = do db <- open_db "students.db"
332 stmt <- (prepare_db db "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")
348 stmt <- (prepare_db db "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")
333 exec_db_v2 stmt
349 exec_db_v2 stmt
334 res <- toList_v2 db
350 res <- toList_v2 db
335 liftIO(print res)
351 liftIO(print res)
336 finalize_db stmt
352 finalize_db stmt
337− c <- liftIO (close_db db)
353+ c <- close_db db
338 return ()
354 return ()
339
355
340−--bindMulti : StmtPtr -> List (Int, (Maybe Value)) -> StmtPtr
356+bindMulti : StmtPtr-> List (Maybe (Int, Value)) -> DB StmtPtr
341−--bindMulti (MkStmtPtr pointer) [] = (MkStmtPtr pointer)
357+bindMulti pointer [] = return pointer
342−--bindMulti (MkStmtPtr pointer) xs = let newxs = mapping 0 xs in
358+bindMulti pointer (Nothing :: vs) = bindMulti pointer vs
343−-- case newxs of
359+bindMulti pointer ((Just (indexs, val))::vs) = case val of
344−-- ((_, Nothing):: vs) => bindMulti (MkStmtPtr pointer) vs
360+ (VInt intval) => do x <- bind_int pointer indexs intval
345−-- ((index, Just v)::vs) => bindMulti(bind pointer index v) vs
361+ bindMulti(x) vs
346−
362+
363+ (VStr strval) => do len <- strlen strval
364+ x <- bind_text pointer strval indexs len
365+ bindMulti(x) vs
366+
367+
368+ (VFloat floatval) => do x <- bind_float pointer indexs floatval
369+ bindMulti(x) vs
347testexpr : DB()
370testexpr : DB()
371+testexpr = do db <- open_db "somedb.db"
348−testexpr = do db <- liftIO (open_db "somedb.db")
372+ --let db = open_db "somedb.db"
349− let sql = (evalSQL [] ((SELECT ALL)(TBL "tbl1")(MkCond (Equals (VCol "data")(VInt 1)))))
373+ let sql = (evalSQL [] ((SELECT ALL)(TBL "tbl1")(MkCond (Equals (VCol "data")(VStr "data1")))))
350 let x = (display sql)
374 let x = (display sql)
375+ let list = (getlist sql)
351 liftIO(print x)
376 liftIO(print x)
352− stmt <- (prepare_db db "select * from tbl1 where num =?")
377+ stmt <- (prepare_db db x)
353− --let Int(theval) = getval(getlist(sql))
378+ bindMulti stmt list
354− bind_int stmt 0 2
355 exec_db_v2 stmt
379 exec_db_v2 stmt
356 res <- toList_v2 db
380 res <- toList_v2 db
357 liftIO(print res)
381 liftIO(print res)
358 finalize_db stmt
382 finalize_db stmt
359− c <- liftIO (close_db db)
383+ close_db db
360 return ()
384 return ()
361
385
362main : IO ()
386main : IO ()
contribs/lib/SQLite3/sqlite3api.c+18−11
@@ -297,7 +297,6 @@ const unsigned char* sqlite3_get_val_text_v2(void* p,int nCol){
297
297
298 text_val =sqlite3_column_text(dbi->ppStmt, nCol);
298 text_val =sqlite3_column_text(dbi->ppStmt, nCol);
299 memcpy(array, text_val, strlen(text_val));
299 memcpy(array, text_val, strlen(text_val));
300− int size = strlen(text_val);
301
300
302 return array;
301 return array;
303
302
@@ -410,7 +409,7 @@ int sqlite3_step_idr(void* db){
410 return rc;
409 return rc;
411}
410}
412
411
413−int sqlite3_bind_int_idr(void* p,int index, int val){
412+void* sqlite3_bind_int_idr(void* p,int index, int val){
414
413
415 DBinfo* dbi =(DBinfo*) p;
414 DBinfo* dbi =(DBinfo*) p;
416 int rc;
415 int rc;
@@ -418,13 +417,14 @@ int sqlite3_bind_int_idr(void* p,int index, int val){
418 printf("\nThe statement has %d wildcards\n", sqlite3_bind_parameter_count(dbi->ppStmt));
417 printf("\nThe statement has %d wildcards\n", sqlite3_bind_parameter_count(dbi->ppStmt));
419 rc =sqlite3_bind_int(dbi->ppStmt,index,val);
418 rc =sqlite3_bind_int(dbi->ppStmt,index,val);
420 if(rc != SQLITE_OK){
419 if(rc != SQLITE_OK){
420+ printf("Error in binding\n");
421− return 1;
421+ return NULL;
422 }
422 }
423
423
424− return rc;
424+ return dbi;
425}
425}
426
426
427−int sqlite3_bind_float_idr(void* p,int index, float val){
427+void* sqlite3_bind_float_idr(void* p,int index, float val){
428
428
429 DBinfo* dbi =(DBinfo*) p;
429 DBinfo* dbi =(DBinfo*) p;
430 int rc;
430 int rc;
@@ -433,10 +433,10 @@ int sqlite3_bind_float_idr(void* p,int index, float val){
433 rc =sqlite3_bind_double(dbi->ppStmt,index,res);
433 rc =sqlite3_bind_double(dbi->ppStmt,index,res);
434
434
435 if(rc != SQLITE_OK){
435 if(rc != SQLITE_OK){
436− return 1;
436+ return NULL;
437 }
437 }
438
438
439− return rc;
439+ return dbi;
440}
440}
441
441
442int sqlite3_bind_null_idr(void* p,int index){
442int sqlite3_bind_null_idr(void* p,int index){
@@ -451,16 +451,17 @@ int sqlite3_bind_null_idr(void* p,int index){
451 return rc;
451 return rc;
452}
452}
453
453
454−int sqlite3_bind_text_idr(void* p,const char* text, int index,int length){
454+void* sqlite3_bind_text_idr(void* p,const char* text, int index,int length){
455
455
456 DBinfo* dbi =(DBinfo*) p;
456 DBinfo* dbi =(DBinfo*) p;
457 int rc;
457 int rc;
458 rc =sqlite3_bind_text(dbi->ppStmt,index,text,length,SQLITE_STATIC);
458 rc =sqlite3_bind_text(dbi->ppStmt,index,text,length,SQLITE_STATIC);
459 if(rc != SQLITE_OK){
459 if(rc != SQLITE_OK){
460+ printf("Error in binding\n");
460− return 1;
461+ return NULL;
461 }
462 }
462
463
463− return rc;
464+ return dbi;
464
465
465}
466}
466int sqlite3_column_count_idr(void* db, const char* tbl_name){
467int sqlite3_column_count_idr(void* db, const char* tbl_name){
@@ -644,6 +645,12 @@ int sqlite3_value_bytes16_idr(void* value){
644
645
645}
646}
646
647
647−
648+int strLength(const char * str){
649+
650+ int length = strlen(str);
651+ return length;
652+
653+
654+}
648
655
649
656
contribs/lib/SQLite3/sqlite3api.h+7−14
@@ -39,7 +39,6 @@ typedef struct {
39 DBinfo* database;
39 DBinfo* database;
40}Table;
40}Table;
41
41
42−int* int_list ();
43
42
44void* sqlite3_open_idr(const char *filename);
43void* sqlite3_open_idr(const char *filename);
45
44
@@ -51,15 +50,14 @@ int sqlite3_exec_idr(void*, const char *sql);
51
50
52char* sqlite3_get_error(void* db);
51char* sqlite3_get_error(void* db);
53
52
54−
55const unsigned char* sqlite3_get_val_text(void* p,const char* tbl_name,int nRow, int nCol);
53const unsigned char* sqlite3_get_val_text(void* p,const char* tbl_name,int nRow, int nCol);
56
54
57const unsigned char* sqlite3_get_val_text_v2(void* p,int nCol);
55const unsigned char* sqlite3_get_val_text_v2(void* p,int nCol);
58
56
59−float sqlite3_get_float_v2(void* p, int nCol);
60−
61void* sqlite3_get_table_idr(void* db, const char *sql);
57void* sqlite3_get_table_idr(void* db, const char *sql);
62
58
59+void sqlite3_free_table_idr(void* db);
60+
63int sqlite3_get_num_col(void* p);
61int sqlite3_get_num_col(void* p);
64
62
65int sqlite3_get_num_row(void* p);
63int sqlite3_get_num_row(void* p);
@@ -68,8 +66,6 @@ int sqlite3_get_num_row_v2(void* p);
68
66
69int sqlite3_get_num_col_v2(void* p);
67int sqlite3_get_num_col_v2(void* p);
70
68
71−void* sqlite3_get_data(void* p, int nRow, int nCol);
72−
73int sqlite3_get_data_type(void* p,const char* tbl_name,int nRow, int nCol);
69int sqlite3_get_data_type(void* p,const char* tbl_name,int nRow, int nCol);
74
70
75int sqlite3_get_data_type_v2(void* p, int nRow, int nCol);
71int sqlite3_get_data_type_v2(void* p, int nRow, int nCol);
@@ -80,7 +76,7 @@ int sqlite3_get_val_int(void* p,const char* tbl_name, int nRow, int nCol);
80
76
81float sqlite3_get_float(void* p,const char* tbl_name, int nRow, int nCol);
77float sqlite3_get_float(void* p,const char* tbl_name, int nRow, int nCol);
82
78
83−void sqlite3_free_table_idr(void* db);
79+float sqlite3_get_float_v2(void* p, int nCol);
84
80
85void* sqlite3_prepare_idr(
81void* sqlite3_prepare_idr(
86 void *db, /* Database handle */
82 void *db, /* Database handle */
@@ -89,15 +85,13 @@ void* sqlite3_prepare_idr(
89
85
90int sqlite3_step_idr(void* stmt);
86int sqlite3_step_idr(void* stmt);
91
87
92−int sqlite3_bind_float_idr(void* p,int index, float val);
88+void* sqlite3_bind_float_idr(void* p,int index, float val);
93
89
94−int sqlite3_bind_int_idr(void* p,int index , int val);
90+void* sqlite3_bind_int_idr(void* p,int index , int val);
95−
96−int sqlite3_bind_int_idr_v2(void* p,int index , int val);
97
91
98int sqlite3_bind_null_idr(void* p,int index);
92int sqlite3_bind_null_idr(void* p,int index);
99
93
100−int sqlite3_bind_text_idr(void* p,const char* text, int index,int length);
94+void* sqlite3_bind_text_idr(void* p,const char* text, int index,int length);
101
95
102int sqlite3_column_count_idr(void* stmt, const char* tbl_name);
96int sqlite3_column_count_idr(void* stmt, const char* tbl_name);
103
97
@@ -142,5 +136,4 @@ int sqlite3_value_bytes_idr(void* value);
142
136
143int sqlite3_value_bytes16_idr(void* value);
137int sqlite3_value_bytes16_idr(void* value);
144
138
145−int sqlite3_errcode(sqlite3 *db);
139+int strLength(const char * str);
146−