blob: 1c4a2bf5cbecde80c8c2f8ca4492a8f86099dd23 (
plain)
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
|
/* Copyright 2009-2014 Yorba Foundation
*
* This software is licensed under the GNU LGPL (version 2.1 or later).
* See the COPYING file in this distribution.
*/
public errordomain DatabaseError {
ERROR,
BACKING,
MEMORY,
ABORT,
LIMITS,
TYPESPEC
}
public abstract class ImportableDatabaseTable {
protected static Sqlite.Database db;
public string table_name = null;
protected void set_table_name(string table_name) {
this.table_name = table_name;
}
// This method will throw an error on an SQLite return code unless it's OK, DONE, or ROW, which
// are considered normal results.
protected static void throw_error(string method, int res) throws DatabaseError {
string msg = "(%s) [%d] - %s".printf(method, res, db.errmsg());
switch (res) {
case Sqlite.OK:
case Sqlite.DONE:
case Sqlite.ROW:
return;
case Sqlite.PERM:
case Sqlite.BUSY:
case Sqlite.READONLY:
case Sqlite.IOERR:
case Sqlite.CORRUPT:
case Sqlite.CANTOPEN:
case Sqlite.NOLFS:
case Sqlite.AUTH:
case Sqlite.FORMAT:
case Sqlite.NOTADB:
throw new DatabaseError.BACKING(msg);
case Sqlite.NOMEM:
throw new DatabaseError.MEMORY(msg);
case Sqlite.ABORT:
case Sqlite.LOCKED:
case Sqlite.INTERRUPT:
throw new DatabaseError.ABORT(msg);
case Sqlite.FULL:
case Sqlite.EMPTY:
case Sqlite.TOOBIG:
case Sqlite.CONSTRAINT:
case Sqlite.RANGE:
throw new DatabaseError.LIMITS(msg);
case Sqlite.SCHEMA:
case Sqlite.MISMATCH:
throw new DatabaseError.TYPESPEC(msg);
case Sqlite.ERROR:
case Sqlite.INTERNAL:
case Sqlite.MISUSE:
default:
throw new DatabaseError.ERROR(msg);
}
}
}
|