diff --git a/SQLite.cs b/SQLite.cs index 008736aa..abb4f154 100644 --- a/SQLite.cs +++ b/SQLite.cs @@ -37,6 +37,47 @@ namespace VRCX m_Connection.Dispose(); } + public void Execute(IJavascriptCallback callback, string sql, IDictionary args = null) + { + try + { + m_ConnectionLock.EnterReadLock(); + try + { + using (var command = new SQLiteCommand(sql, m_Connection)) + { + if (args != null) + { + foreach (var arg in args) + { + command.Parameters.Add(new SQLiteParameter(arg.Key, arg.Value)); + } + } + using (var reader = command.ExecuteReader()) + { + while (reader.Read() == true) + { + var values = new object[reader.FieldCount]; + reader.GetValues(values); + callback.ExecuteAsync(null, values); + } + } + } + callback.ExecuteAsync(null, null); + } + finally + { + m_ConnectionLock.ExitReadLock(); + } + } + catch (Exception e) + { + callback.ExecuteAsync(e.Message, null); + } + + callback.Dispose(); + } + public int ExecuteNonQuery(string sql, IDictionary args = null) { int result = -1; @@ -66,48 +107,5 @@ namespace VRCX return result; } - - public void Execute(IJavascriptCallback fetchCallback, IJavascriptCallback resolveCallback, IJavascriptCallback rejectCallback, string sql, IDictionary args = null) - { - try - { - m_ConnectionLock.EnterReadLock(); - try - { - using (var command = new SQLiteCommand(sql, m_Connection)) - { - if (args != null) - { - foreach (var arg in args) - { - command.Parameters.Add(new SQLiteParameter(arg.Key, arg.Value)); - } - } - using (var reader = command.ExecuteReader()) - { - while (reader.Read() == true) - { - var values = new object[reader.FieldCount]; - reader.GetValues(values); - fetchCallback.ExecuteAsync(values); - } - } - } - resolveCallback.ExecuteAsync(); - } - finally - { - m_ConnectionLock.ExitReadLock(); - } - } - catch (Exception e) - { - rejectCallback.ExecuteAsync(e.Message); - } - - fetchCallback.Dispose(); - resolveCallback.Dispose(); - rejectCallback.Dispose(); - } } } diff --git a/html/src/service/sqlite.js b/html/src/service/sqlite.js index 76267eb5..eafa6d16 100644 --- a/html/src/service/sqlite.js +++ b/html/src/service/sqlite.js @@ -3,7 +3,15 @@ class SQLiteService { execute(callback, sql, args = null) { return new Promise((resolve, reject) => { - SQLite.Execute(callback, resolve, reject, sql, args); + SQLite.Execute((err, data) => { + if (err !== null) { + reject(err); + } else if (data === null) { + resolve(); + } else { + callback(data); + } + }, sql, args); }); }