捕获数据库操作的所有异常

croire 3 years ago
parent 013c6f2fe7
commit 4a3f0d43eb

@ -103,21 +103,30 @@ namespace DownKyi.Core.Storage.Database
{ {
List<Cover> covers = new List<Cover>(); List<Cover> covers = new List<Cover>();
dbHelper.ExecuteQuery(sql, reader => try
{ {
while (reader.Read()) dbHelper.ExecuteQuery(sql, reader =>
{ {
Cover cover = new Cover while (reader.Read())
{ {
Avid = (long)reader["avid"], Cover cover = new Cover
Bvid = (string)reader["bvid"], {
Cid = (long)reader["cid"], Avid = (long)reader["avid"],
Url = (string)reader["url"], Bvid = (string)reader["bvid"],
Md5 = (string)reader["md5"] Cid = (long)reader["cid"],
}; Url = (string)reader["url"],
covers.Add(cover); Md5 = (string)reader["md5"]
} };
}); covers.Add(cover);
}
});
}
catch (Exception e)
{
Utils.Debugging.Console.PrintLine("Query()发生异常: {0}", e);
LogManager.Error($"{tableName}", e);
}
return covers; return covers;
} }

@ -14,7 +14,7 @@ namespace DownKyi.Core.Storage.Database.Download
protected string tableName = "download"; protected string tableName = "download";
#if DEBUG #if DEBUG
private readonly DbHelper dbHelper = new DbHelper(StorageManager.GetDownload().Replace(".db","_debug.db")); private readonly DbHelper dbHelper = new DbHelper(StorageManager.GetDownload().Replace(".db", "_debug.db"));
#else #else
private readonly DbHelper dbHelper = new DbHelper(StorageManager.GetDownload(), key); private readonly DbHelper dbHelper = new DbHelper(StorageManager.GetDownload(), key);
#endif #endif
@ -33,25 +33,25 @@ namespace DownKyi.Core.Storage.Database.Download
/// <param name="obj"></param> /// <param name="obj"></param>
public void Insert(string uuid, object obj) public void Insert(string uuid, object obj)
{ {
// 定义一个流 try
Stream stream = new MemoryStream(); {
// 定义一个格式化器 // 定义一个流
BinaryFormatter formatter = new BinaryFormatter(); Stream stream = new MemoryStream();
// 序列化 // 定义一个格式化器
formatter.Serialize(stream, obj); BinaryFormatter formatter = new BinaryFormatter();
// 序列化
formatter.Serialize(stream, obj);
byte[] array = null; byte[] array = null;
array = new byte[stream.Length]; array = new byte[stream.Length];
//将二进制流写入数组 //将二进制流写入数组
stream.Position = 0; stream.Position = 0;
stream.Read(array, 0, (int)stream.Length); stream.Read(array, 0, (int)stream.Length);
//关闭流 //关闭流
stream.Close(); stream.Close();
try
{
string sql = $"insert into {tableName}(id, data) values (@id, @data)"; string sql = $"insert into {tableName}(id, data) values (@id, @data)";
dbHelper.ExecuteNonQuery(sql, new Action<SQLiteParameterCollection>((para) => dbHelper.ExecuteNonQuery(sql, new Action<SQLiteParameterCollection>((para) =>
{ {
@ -86,25 +86,25 @@ namespace DownKyi.Core.Storage.Database.Download
public void Update(string uuid, object obj) public void Update(string uuid, object obj)
{ {
// 定义一个流 try
Stream stream = new MemoryStream(); {
// 定义一个格式化器 // 定义一个流
BinaryFormatter formatter = new BinaryFormatter(); Stream stream = new MemoryStream();
// 序列化 // 定义一个格式化器
formatter.Serialize(stream, obj); BinaryFormatter formatter = new BinaryFormatter();
// 序列化
formatter.Serialize(stream, obj);
byte[] array = null; byte[] array = null;
array = new byte[stream.Length]; array = new byte[stream.Length];
//将二进制流写入数组 //将二进制流写入数组
stream.Position = 0; stream.Position = 0;
stream.Read(array, 0, (int)stream.Length); stream.Read(array, 0, (int)stream.Length);
//关闭流 //关闭流
stream.Close(); stream.Close();
try
{
string sql = $"update {tableName} set data=@data where id glob @id"; string sql = $"update {tableName} set data=@data where id glob @id";
dbHelper.ExecuteNonQuery(sql, new Action<SQLiteParameterCollection>((para) => dbHelper.ExecuteNonQuery(sql, new Action<SQLiteParameterCollection>((para) =>
{ {
@ -160,22 +160,31 @@ namespace DownKyi.Core.Storage.Database.Download
{ {
Dictionary<string, object> objects = new Dictionary<string, object>(); Dictionary<string, object> objects = new Dictionary<string, object>();
dbHelper.ExecuteQuery(sql, reader => try
{ {
while (reader.Read()) dbHelper.ExecuteQuery(sql, reader =>
{ {
// 读取字节数组 while (reader.Read())
byte[] array = (byte[])reader["data"]; {
// 定义一个流 // 读取字节数组
MemoryStream stream = new MemoryStream(array); byte[] array = (byte[])reader["data"];
//定义一个格式化器 // 定义一个流
BinaryFormatter formatter = new BinaryFormatter(); MemoryStream stream = new MemoryStream(array);
// 反序列化 //定义一个格式化器
object obj = formatter.Deserialize(stream); BinaryFormatter formatter = new BinaryFormatter();
// 反序列化
objects.Add((string)reader["id"], obj); object obj = formatter.Deserialize(stream);
}
}); objects.Add((string)reader["id"], obj);
}
});
}
catch (Exception e)
{
Utils.Debugging.Console.PrintLine("Query()发生异常: {0}", e);
LogManager.Error($"{tableName}", e);
}
return objects; return objects;
} }

@ -90,20 +90,29 @@ namespace DownKyi.Core.Storage.Database
{ {
List<Header> headers = new List<Header>(); List<Header> headers = new List<Header>();
dbHelper.ExecuteQuery(sql, reader => try
{ {
while (reader.Read()) dbHelper.ExecuteQuery(sql, reader =>
{ {
Header header = new Header while (reader.Read())
{ {
Mid = (long)reader["mid"], Header header = new Header
Name = (string)reader["name"], {
Url = (string)reader["url"], Mid = (long)reader["mid"],
Md5 = (string)reader["md5"] Name = (string)reader["name"],
}; Url = (string)reader["url"],
headers.Add(header); Md5 = (string)reader["md5"]
} };
}); headers.Add(header);
}
});
}
catch (Exception e)
{
Utils.Debugging.Console.PrintLine("Query()发生异常: {0}", e);
LogManager.Error($"{tableName}", e);
}
return headers; return headers;
} }

Loading…
Cancel
Save