📄 dbhelper.cs
字号:
SQLiteTransaction transaction = enumerator.get_Current();
try
{
transaction.Rollback();
transaction.Dispose();
continue;
}
catch
{
continue;
}
}
}
finally
{
enumerator.Dispose();
}
this._localTransactionCollection.Clear();
this._localTransactionCollection = null;
}
}
if (this._connection != null)
{
this._connection.Close();
this._connection.Dispose();
}
}
}
catch
{
}
finally
{
this._connection = null;
}
}
internal void EnableConnection()
{
if (this._connection == null)
{
string connectionString = string.Format("Data Source={0};Password={1}", this._dataSource, this._password);
this._connection = new SQLiteConnection(connectionString);
}
if (this._connection.State == ConnectionState.Closed)
{
this._connection.Open();
}
}
internal int ExecuteNonQuery(string sql, params object[] parameters)
{
this.EnableConnection();
return this.CreateCommand(sql, parameters).ExecuteNonQuery();
}
internal SQLiteDataReader ExecuteReader(string sql, params object[] parameters)
{
this.EnableConnection();
return this.CreateCommand(sql, parameters).ExecuteReader();
}
internal int ExecuteScalar(string sql, params object[] parameters)
{
this.EnableConnection();
object obj2 = this.CreateCommand(sql, parameters).ExecuteScalar();
if (obj2 != null)
{
return int.Parse(obj2.ToString());
}
return 0;
}
~DbHelper()
{
this.Dispose(false);
}
public bool InitializeDatabase(string currentUserSid)
{
bool flag;
lock (_locker)
{
if (!this.Disposed)
{
this.Dispose();
}
string path = Path.Combine(ImpsPathInfo.ApplicationDataDir, currentUserSid);
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
this._dataSource = Path.Combine(path, "history.dat");
this._password = currentUserSid;
this._localTransactionCollection = new Dictionary<int, SQLiteTransaction>();
try
{
if (!File.Exists(this._dataSource))
{
SQLiteConnection.CreateFile(this._dataSource);
string connectionString = string.Format("Data Source={0};Password={1}", this._dataSource, this._password);
this._connection = new SQLiteConnection(connectionString);
this._connection.SetPassword(this._password);
}
flag = true;
}
catch
{
this.Dispose();
File.Delete(this._dataSource);
flag = false;
}
}
return flag;
}
internal void JoinTransaction()
{
lock (_locker)
{
this.EnableConnection();
_refCount++;
int num = Thread.CurrentThread.get_ManagedThreadId();
if (!this.LocalTransactionCollection.ContainsKey(num))
{
this.LocalTransactionCollection.Add(num, this._connection.BeginTransaction());
}
}
}
internal void RollbackTransaction()
{
lock (_locker)
{
int num = Thread.CurrentThread.get_ManagedThreadId();
if (this.LocalTransactionCollection.ContainsKey(num))
{
this.LocalTransactionCollection.get_Item(num).Rollback();
_refCount--;
this.LocalTransactionCollection.Remove(num);
if (_refCount == 0)
{
this._connection.Close();
}
}
}
}
public bool Disposed
{
get
{
return (this._connection != null);
}
}
public static DbHelper Instance
{
get
{
return _instance;
}
}
internal bool IsFirstUse
{
get
{
return this._isFirstUse;
}
}
private Dictionary<int, SQLiteTransaction> LocalTransactionCollection
{
get
{
lock (_locker)
{
if (this._localTransactionCollection == null)
{
this._localTransactionCollection = new Dictionary<int, SQLiteTransaction>();
}
return this._localTransactionCollection;
}
}
}
internal List<string> Objects
{
get
{
lock (_locker)
{
List<string> list = new List<string>();
using (SQLiteDataReader reader = this.ExecuteReader("SELECT [Name] FROM [SQLITE_MASTER] WHERE ([type] = 'table') OR ([type] = 'view')", null))
{
while (reader.Read())
{
list.Add(reader["name"].ToString());
}
}
return list;
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -