using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SQLite;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace Util
{
public class SqliteHelper
{
public static readonly string connString = "data source=" +
AppDomain.CurrentDomain.BaseDirectory + @"\Setup.db";
public static int ExecuteNonQuery(string SQLString)
{
int n = -1;
SQLiteConnection connection = new SQLiteConnection(connString);
try
{
connection.Open();
SQLiteCommand command = new SQLiteCommand(SQLString, connection);
n = command.ExecuteNonQuery();
}
catch (System.Data.SQLite.SQLiteException ex)
{
Util.Log.WriteTextLog("GetDataList:ExecuteNonQuery;" + ex.Message);
}
finally
{
connection.Close();
}
return n;
}
public static object ExecuteScalar(string SQLString)
{
object resutl = null;
SQLiteConnection connection = new SQLiteConnection(connString);
try
{
connection.Open();
SQLiteCommand command = new SQLiteCommand(SQLString, connection);
resutl = command.ExecuteScalar();
}
catch (System.Data.SQLite.SQLiteException ex)
{
Util.Log.WriteTextLog("GetDataList:ExecuteScalar;" + ex.Message);
}
finally
{
connection.Close();
}
return resutl;
}
public static DataTable GetDataTable(string SQLString)
{
return GetDataSet(SQLString).Tables[0];
}
public static DataSet GetDataSet(string SQLString)
{
DataSet ds = new DataSet();
SQLiteConnection connection = new SQLiteConnection(connString);
try
{
connection.Open();
SQLiteDataAdapter command = new SQLiteDataAdapter(SQLString, connection);
command.Fill(ds, "ds");
}
catch (System.Data.SQLite.SQLiteException ex)
{
Util.Log.WriteTextLog("GetDataList:GetDataSet;" + ex.Message);
}
finally
{
connection.Close();
}
return ds;
}
public static List<T> GetDataList<T>(string sql)
{
DataTable dt = GetDataSet(sql).Tables[0];
var list = new List<T>();
var plist = new List<PropertyInfo>(typeof(T).GetProperties());
foreach (DataRow item in dt.Rows)
{
T s = Activator.CreateInstance<T>();
for (int i = 0; i < dt.Columns.Count; i++)
{
PropertyInfo info = plist.Find(p => p.Name == dt.Columns[i].ColumnName);
if (info != null)
{
try
{
if (!Convert.IsDBNull(item[i]))
{
object v = null;
if (info.PropertyType.ToString().Contains("System.Nullable"))
{
v = Convert.ChangeType(item[i], Nullable.GetUnderlyingType(info.PropertyType));
}
else
{
v = Convert.ChangeType(item[i], info.PropertyType);
}
info.SetValue(s, v, null);
}
}
catch (Exception ex)
{
Util.Log.WriteTextLog("GetDataList:SqliteHelper;" +ex.Message);
}
}
}
list.Add(s);
}
return list;
}
}
}
C# SqliteHelper
于 2023-04-08 18:01:19 首次发布