~midori/midori/trunk

« back to all changes in this revision

Viewing changes to midori/midori-database.vala

  • Committer: Christian Dywan
  • Date: 2015-03-15 16:24:41 UTC
  • mto: This revision was merged to the branch mainline in revision 6888.
  • Revision ID: christian@twotoasts.de-20150315162441-6t9jamdhqold3zi1
Throw error for wrong paramter in Statement.bind

Show diffs side-by-side

added added

removed removed

Lines of Context:
45
45
        public virtual bool init (GLib.Cancellable? cancellable = null) throws DatabaseError {
46
46
            int result = database.db.prepare_v2 (query, -1, out _stmt, null);
47
47
            if (result != Sqlite.OK)
48
 
                throw new DatabaseError.COMPILE ("Failed to compile statement: %s".printf (query));
 
48
                throw new DatabaseError.COMPILE ("Failed to compile statement: %s".printf (database.db.errmsg ()));
49
49
            return true;
50
50
        }
51
51
 
57
57
         */
58
58
        public void bind (string pname, ...) throws DatabaseError {
59
59
            int pindex = stmt.bind_parameter_index (pname);
 
60
            if (pindex <= 0)
 
61
                throw new DatabaseError.TYPE ("No such parameter '%s' in statement: %s".printf (pname, query));
60
62
            var args = va_list ();
61
63
            Type ptype = args.arg ();
62
64
            if (ptype == typeof (string)) {
158
160
        internal bool trace = false;
159
161
        public Sqlite.Database? db { get { return _db; } }
160
162
        protected Sqlite.Database? _db = null;
161
 
        public string? path { get; protected set; default = null; }
 
163
        public string path { get; protected set; default = ":memory:"; }
162
164
 
163
165
        /*
164
166
         * A new database successfully opened for the first time.
170
172
         * If a filename is passed it's assumed to be in the config folder.
171
173
         * Otherwise the database is in memory only (useful for private browsing).
172
174
         */
173
 
        public Database (string? path) throws DatabaseError {
 
175
        public Database (string path=":memory:") throws DatabaseError {
174
176
            Object (path: path);
175
177
            init ();
176
178
        }
177
179
 
178
 
        string resolve_path (string? path) {
179
 
            if (path == null || path.has_prefix (":memory:"))
 
180
        string resolve_path (string path) {
 
181
            if (path.has_prefix (":memory:"))
180
182
                return ":memory:";
181
183
            else if (!Path.is_absolute (path))
182
184
                return Midori.Paths.get_config_filename_for_writing (path);
207
209
                db.exec ("PRAGMA synchronous = NORMAL; PRAGMA temp_store = MEMORY;");
208
210
            db.exec ("PRAGMA count_changes = OFF;");
209
211
 
 
212
            if (real_path == ":memory:")
 
213
                return true;
 
214
 
210
215
            int64 user_version;
211
216
            Sqlite.Statement stmt;
212
217
            if (db.prepare_v2 ("PRAGMA user_version;", -1, out stmt, null) != Sqlite.OK)