You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

185 lines
3.8 KiB

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SQLite;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PSqLiteWrapper
{
public class PSqLite
{
public static string DBPath { get; set; }
private static string ConnString
{
get { return $@"Data Source = {DBPath};"; }
}
public static SQLiteConnection Connection
{
get
{
if (string.IsNullOrEmpty(DBPath))
throw new ArgumentException("Empty DBPath");
try
{
return new SQLiteConnection(ConnString);
}
catch (Exception ex)
{
throw ex;
}
}
}
public static void CreateDB()
{
if (string.IsNullOrEmpty(DBPath))
throw new ArgumentException("Empty DBPath");
try
{
if (!File.Exists(DBPath))
SQLiteConnection.CreateFile(DBPath);
}
catch (Exception ex)
{
throw ex;
}
}
public static void ExecuteQuery(string query)
{
if (string.IsNullOrEmpty(DBPath))
throw new ArgumentException("Empty DBPath");
try
{
using (SQLiteConnection conn = Connection)
{
conn.Open();
SQLiteCommand command = new SQLiteCommand(query, conn);
command.ExecuteNonQuery();
Connection.Close();
}
}
catch (Exception ex)
{
throw ex;
}
}
public static void ExecuteQuery(string[] queries)
{
if (string.IsNullOrEmpty(DBPath))
throw new ArgumentException("Empty DBPath");
try
{
using (SQLiteConnection conn = Connection)
{
conn.Open();
PSqLite.ExecuteQuery(conn, "BEGIN TRANSACTION;");
for (int i = 0; i < queries.Length; i++)
{
SQLiteCommand command = new SQLiteCommand(queries[i], conn);
command.ExecuteNonQuery();
}
PSqLite.ExecuteQuery(conn, "END TRANSACTION;");
Connection.Close();
}
}
catch (Exception ex)
{
throw ex;
}
}
public static void ExecuteQueryAsync(string query)
{
if (string.IsNullOrEmpty(DBPath))
throw new ArgumentException("Empty DBPath");
try
{
using (SQLiteConnection conn = Connection)
{
conn.Open();
SQLiteCommand command = new SQLiteCommand(query, conn);
command.ExecuteNonQueryAsync();
Connection.Close();
}
}
catch (Exception ex)
{
throw ex;
}
}
public static void ExecuteQuery(SQLiteConnection openedConn, string query)
{
SQLiteCommand command = new SQLiteCommand(query, openedConn);
command.ExecuteNonQuery();
}
public static void ExecuteQueryAsync(SQLiteConnection openedConn, string query)
{
SQLiteCommand command = new SQLiteCommand(query, openedConn);
command.ExecuteNonQueryAsync();
}
public static DataSet ExecuteSelectQuery(string query)
{
if (string.IsNullOrEmpty(DBPath))
throw new ArgumentException("Empty DBPath");
try
{
using (SQLiteConnection conn = Connection)
{
DataSet dataSet = new DataSet();
conn.Open();
SQLiteDataAdapter adapter = new SQLiteDataAdapter(query, conn);
adapter.Fill(dataSet);
Connection.Close();
return dataSet;
}
}
catch (Exception ex)
{
throw ex;
}
}
public static DataSet ExecuteSelectQuery(SQLiteConnection openedConn, string query)
{
DataSet dataSet = new DataSet();
SQLiteDataAdapter adapter = new SQLiteDataAdapter(query, openedConn);
adapter.Fill(dataSet);
return dataSet;
}
public static SQLiteDataAdapter GetAdapterSelectQuery(SQLiteConnection openedConn, string query, bool withCommandBuilder = true)
{
SQLiteDataAdapter adapter = new SQLiteDataAdapter(query, openedConn);
if (withCommandBuilder)
{
SQLiteCommandBuilder builder = new SQLiteCommandBuilder(adapter);
adapter.UpdateCommand = builder.GetUpdateCommand();
adapter.DeleteCommand = builder.GetDeleteCommand();
adapter.InsertCommand = builder.GetInsertCommand();
}
return adapter;
}
}
}