2
0

ManagedConnection.cs 1.9 KB

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