File: sqlite.ml

package info (click to toggle)
ocaml-sqlite 0.3.5.arch.4-4
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 204 kB
  • ctags: 133
  • sloc: sh: 2,759; ansic: 540; ml: 216; makefile: 120
file content (83 lines) | stat: -rw-r--r-- 3,646 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
(**************************************************************************)
(*  Copyright (c) 2003 Mikhail Fedotov <mikhail@kittown.com>              *)
(*                                                                        *)
(*  Permission is hereby granted, free of charge, to any person           *)
(*  obtaining a copy of this software and associated documentation files  *)
(*  (the "Software"), to deal in the Software without restriction,        *)
(*  including without limitation the rights to use, copy, modify, merge,  *)
(*  publish, distribute, sublicense, and/or sell copies of the Software,  *)
(*  and to permit persons to whom the Software is furnished to do so,     *)
(*  subject to the following conditions:                                  *)
(*                                                                        *)
(*  The above copyright notice and this permission notice shall be        *)
(*  included in all copies or substantial portions of the Software.       *)
(*                                                                        *)
(*  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       *)
(*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES       *)
(*  OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND              *)
(*  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS   *)
(*  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN    *)
(*  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN     *)
(*  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE      *)
(*  SOFTWARE.                                                             *)
(**************************************************************************)

exception Sqlite_error of string
exception Sqlite_done
exception Sqlite_busy
exception Sqlite_null_value

let _ = Callback.register_exception "sqlite error"      (Sqlite_error  "Registering Callback")
let _ = Callback.register_exception "sqlite done"       (Sqlite_done)
let _ = Callback.register_exception "sqlite busy"       (Sqlite_busy)
let _ = Callback.register_exception "sqlite null value" (Sqlite_null_value)

type db
type vm

type rc =
   RC_ok
 | RC_error
 | RC_internal
 | RC_perm
 | RC_abort
 | RC_busy
 | RC_locked
 | RC_nomem
 | RC_readonly
 | RC_interrupt
 | RC_ioerr
 | RC_corrupt
 | RC_notfound
 | RC_full
 | RC_cantopen
 | RC_protocol
 | RC_empty
 | RC_schema
 | RC_toobig
 | RC_constraint
 | RC_mismatch
 | RC_misuse
 | RC_nofls
 | RC_auth
 | RC_format

external db_open  : string -> db = "caml_sqlite_open"
external db_close : db -> unit = "caml_sqlite_close"

external exec  : db -> string -> unit = "caml_sqlite_exec"

external compile        : db -> string -> int -> bool -> (vm * int * bool) = "caml_sqlite_compile"
external compile_simple : db -> string -> vm                               = "caml_sqlite_compile_simple"
external step           : vm -> string -> string array                     = "caml_sqlite_step"
external step_simple    : vm -> string array                               = "caml_sqlite_step_simple"
external step_opt       : vm -> string option array                        = "caml_sqlite_step_opt"
external finalize       : vm -> unit                                       = "caml_sqlite_vm_finalize"

external last_insert_rowid : db -> int = "caml_sqlite_last_insert_rowid"

external db_rc : db -> rc = "caml_sqlite_db_retcode"
external vm_rc : vm -> rc = "caml_sqlite_vm_retcode"

external column_names : vm -> string array = "caml_sqlite_column_names"
external column_types : vm -> string array = "caml_sqlite_column_types"