public void test_error() { using (sqlite3 db = ugly.open(":memory:")) { db.exec("CREATE TABLE foo (x int UNIQUE);"); db.exec("INSERT INTO foo (x) VALUES (3);"); bool fail = false; try { db.exec("INSERT INTO foo (x) VALUES (3);"); } catch (ugly.sqlite3_exception e) { fail = true; int errcode = db.errcode(); Assert.AreEqual(errcode, e.errcode); Assert.AreEqual(errcode, raw.SQLITE_CONSTRAINT); Assert.AreEqual(db.extended_errcode(), raw.SQLITE_CONSTRAINT_UNIQUE, "Extended error codes for SQLITE_CONSTRAINT were added in 3.7.16"); string errmsg = db.errmsg(); Assert.IsTrue(errmsg != null); Assert.IsTrue(errmsg.Length > 0); } Assert.IsTrue(fail); Assert.IsTrue(raw.sqlite3_errstr(raw.SQLITE_CONSTRAINT) != null); } }
private static void check_ok(sqlite3 db, int rc) { if (raw.SQLITE_OK != rc) { throw new sqlite3_exception(rc, db.errmsg()); } }
/// <summary> /// Executes only read-only SQL. /// </summary> /// <returns>The query.</returns> /// <param name="sql">Sql.</param> /// <param name="paramArgs">Parameter arguments.</param> public Cursor RawQuery(String sql, params Object[] paramArgs) { if (!IsOpen) { Open(Path); } Cursor cursor = null; sqlite3_stmt command = null; var t = Factory.StartNew(() => { try { Log.V(Tag, "RawQuery sql: {0} ({1})", sql, String.Join(", ", paramArgs.ToStringArray())); command = BuildCommand(_readConnection, sql, paramArgs); cursor = new Cursor(command); } catch (Exception e) { if (command != null) { command.Dispose(); } var args = paramArgs == null ? String.Empty : String.Join(",", paramArgs.ToStringArray()); Log.E(Tag, "Error executing raw query '{0}' is values '{1}' {2}".Fmt(sql, args, _readConnection.errmsg()), e); throw; } return(cursor); }); return(t.Result); }
/// <summary> /// Executes only read-only SQL. /// </summary> /// <returns>The query.</returns> /// <param name="sql">Sql.</param> /// <param name="paramArgs">Parameter arguments.</param> public Cursor RawQuery(String sql, params Object[] paramArgs) { if (!IsOpen) { throw new CouchbaseLiteException("RawQuery called on closed database", StatusCode.BadRequest); } Cursor cursor = null; sqlite3_stmt command = null; var t = Factory.StartNew(() => { try { Log.V(TAG, "RawQuery sql: {0} ({1})", sql, String.Join(", ", paramArgs.ToStringArray())); command = BuildCommand(_readConnection, sql, paramArgs); cursor = new Cursor(command); } catch (Exception e) { if (command != null) { command.Dispose(); } var args = paramArgs == null ? String.Empty : String.Join(",", paramArgs.ToStringArray()); Log.E(TAG, "Error executing raw query '{0}' is values '{1}' {2}".Fmt(sql, args, _readConnection.errmsg()), e); LastErrorCode = raw.sqlite3_errcode(_readConnection); throw; } return(cursor); }); return(t.Result); }