Closed DreRandaci closed 6 years ago
using System;
using Microsoft.Data.Sqlite;
namespace {ProjectNamespace}
{
public class DatabaseInterface
{
private string _connectionString;
private SqliteConnection _connection;
public DatabaseInterface()
{
// Replace {you} with the correct value
try {
_connectionString = $"Data Source={DatabaseName}.db";
_connection = new SqliteConnection(_connectionString);
Console.Write("Connected...");
} catch (Exception err) {
Console.WriteLine("ERROR: Not connected to db " + err.Data);
Console.ReadLine();
}
}
public void Query(string command, Action<SqliteDataReader> handler)
{
using (_connection)
{
_connection.Open ();
SqliteCommand dbcmd = _connection.CreateCommand ();
dbcmd.CommandText = command;
using (SqliteDataReader dataReader = dbcmd.ExecuteReader())
{
handler (dataReader);
}
dbcmd.Dispose ();
}
}
public void Update(string command)
{
using (_connection)
{
_connection.Open ();
SqliteCommand dbcmd = _connection.CreateCommand ();
dbcmd.CommandText = command;
dbcmd.ExecuteNonQuery ();
dbcmd.Dispose ();
}
}
public int Insert(string command)
{
int insertedItemId = 0;
using (_connection)
{
_connection.Open ();
SqliteCommand dbcmd = _connection.CreateCommand ();
dbcmd.CommandText = command;
dbcmd.ExecuteNonQuery ();
this.Query("select last_insert_rowid()",
(SqliteDataReader reader) => {
while (reader.Read ())
{
insertedItemId = reader.GetInt32(0);
}
}
);
dbcmd.Dispose ();
}
return insertedItemId;
}
public void {CheckTableName} ()
{
using (_connection)
{
_connection.Open();
SqliteCommand dbcmd = _connection.CreateCommand ();
// Query the account table to see if table is created
dbcmd.CommandText = $"SELECT `Id` FROM `{TableName}`";
try
{
// Try to run the query. If it throws an exception, create the table
using (SqliteDataReader reader = dbcmd.ExecuteReader()) { }
dbcmd.Dispose ();
}
catch (Microsoft.Data.Sqlite.SqliteException ex)
{
Console.WriteLine(ex.Message);
if (ex.Message.Contains("no such table"))
{
dbcmd.CommandText = $@"CREATE TABLE `TableName` (
`Id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT
)";
try
{
dbcmd.ExecuteNonQuery ();
}
catch (Microsoft.Data.Sqlite.SqliteException crex)
{
Console.WriteLine("Table already exists. Ignoring");
}
}
}
_connection.Close();
}
}
}
}
Story
Create a file to manage access to the database