[rygel] db: Add .prepare function to prepare statements



commit 6a193ad8b8b17b409df7b29b1d0ce6fe337fb654
Author: Jens Georg <mail jensge org>
Date:   Sun Feb 7 14:58:52 2016 +0100

    db: Add .prepare function to prepare statements
    
    Signed-off-by: Jens Georg <mail jensge org>

 src/librygel-db/database.vala |   21 ++++++++++++++++++---
 1 files changed, 18 insertions(+), 3 deletions(-)
---
diff --git a/src/librygel-db/database.vala b/src/librygel-db/database.vala
index 385b880..cc7bf18 100644
--- a/src/librygel-db/database.vala
+++ b/src/librygel-db/database.vala
@@ -26,7 +26,10 @@ namespace Rygel.Database {
 
     public errordomain DatabaseError {
         SQLITE_ERROR, /// Error code translated from SQLite
-        OPEN          /// Error while opening database file
+        OPEN,         /// Error while opening database file
+        PREPARE,      /// Error while preparing a statement
+        BIND,         /// Error while binding values to a statement
+        STEP          /// Error while running through a result set
     }
 
     public enum Flavor {
@@ -209,8 +212,8 @@ public class Rygel.Database.Database : Object, Initable {
      * @throws DatabaseError if the underlying SQLite operation fails.
      */
     public Cursor exec_cursor (string        sql,
-                                       GLib.Value[]? arguments = null)
-                                       throws DatabaseError {
+                               GLib.Value[]? arguments = null)
+                               throws DatabaseError {
         return new Cursor (this.db, sql, arguments);
     }
 
@@ -290,4 +293,16 @@ public class Rygel.Database.Database : Object, Initable {
                       error.message);
         }
     }
+
+    public Statement prepare (string sql) throws DatabaseError {
+        Statement statement;
+
+        var err = this.db.prepare_v2 (sql, -1, out statement);
+        if (err != Sqlite.OK) {
+            var msg = "Unable to prepare statement '%s' : %s";
+            throw new DatabaseError.PREPARE (msg, sql, this.db.errmsg ());
+        }
+
+        return statement;
+    }
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]