ManagedConnection.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using System;
  2. using System.Collections.Generic;
  3. using SQLitePCL.pretty;
  4. namespace Emby.Server.Implementations.Data
  5. {
  6. public class ManagedConnection : IDisposable
  7. {
  8. private SQLiteDatabaseConnection db;
  9. private readonly bool _closeOnDispose;
  10. public ManagedConnection(SQLiteDatabaseConnection db, bool closeOnDispose)
  11. {
  12. this.db = db;
  13. _closeOnDispose = closeOnDispose;
  14. }
  15. public IStatement PrepareStatement(string sql)
  16. {
  17. return db.PrepareStatement(sql);
  18. }
  19. public IEnumerable<IStatement> PrepareAll(string sql)
  20. {
  21. return db.PrepareAll(sql);
  22. }
  23. public void ExecuteAll(string sql)
  24. {
  25. db.ExecuteAll(sql);
  26. }
  27. public void Execute(string sql, params object[] values)
  28. {
  29. db.Execute(sql, values);
  30. }
  31. public void RunQueries(string[] sql)
  32. {
  33. db.RunQueries(sql);
  34. }
  35. public void RunInTransaction(Action<IDatabaseConnection> action, TransactionMode mode)
  36. {
  37. db.RunInTransaction(action, mode);
  38. }
  39. public T RunInTransaction<T>(Func<IDatabaseConnection, T> action, TransactionMode mode)
  40. {
  41. return db.RunInTransaction(action, mode);
  42. }
  43. public IEnumerable<IReadOnlyList<IResultSetValue>> Query(string sql)
  44. {
  45. return db.Query(sql);
  46. }
  47. public IEnumerable<IReadOnlyList<IResultSetValue>> Query(string sql, params object[] values)
  48. {
  49. return db.Query(sql, values);
  50. }
  51. public void Close()
  52. {
  53. using (db)
  54. {
  55. }
  56. }
  57. public void Dispose()
  58. {
  59. if (_closeOnDispose)
  60. {
  61. Close();
  62. }
  63. }
  64. }
  65. }