From 5bcb0df7df62de6919fe656eb2ac26ddca8ee1b4 Mon Sep 17 00:00:00 2001 From: Stedd Date: Sat, 12 Feb 2022 13:45:36 +0100 Subject: [PATCH 1/2] Generic load data working --- DBInteraction.cs | 33 +++++++++------------------------ MainWindow.xaml.cs | 23 +++++++++++++++-------- 2 files changed, 24 insertions(+), 32 deletions(-) diff --git a/DBInteraction.cs b/DBInteraction.cs index 116109d..94489e6 100644 --- a/DBInteraction.cs +++ b/DBInteraction.cs @@ -21,35 +21,20 @@ namespace CryptoCalc Debug.WriteLine($"Saved {data.DBTableName} DB data"); } - //public static List _LoadTransactions() - //{ - // using IDbConnection _connection = new SQLiteConnection(Util.GetConnectionString("RawData")); - // var output = _connection.Query("select * from RawData", new DynamicParameters()); - // Debug.WriteLine("Loaded DB data"); - // return output.ToList(); - //} - - public static List LoadTransactions() + public class GenericDB where T : DBClasses { - using IDbConnection _connection = new SQLiteConnection(Util.GetConnectionString("Transactions")); - IEnumerable output = _connection.Query("select * from Transactions", new DynamicParameters()); - Debug.WriteLine("Loaded DB data"); - return output.ToList(); - } - - public static List LoadTransactionsOfCurrency(string currency) - { - if (currency is null) + public IEnumerable LoadAllData(string tableName) { - throw new ArgumentNullException(nameof(currency)); - } + if (tableName is null) + { + throw new ArgumentNullException(nameof(tableName)); + } - Debug.WriteLine($"Fetching all {currency} transactions from Database"); - using IDbConnection connection = new SQLiteConnection(Util.GetConnectionString("Transactions")); - return connection.Query($"select * from Transactions where Currency = '{ currency.ToUpper() }'") - .ToList(); + using IDbConnection _connection = new SQLiteConnection(Util.GetConnectionString(tableName)); + return _connection.Query($"select * from {tableName}", new DynamicParameters()); + } } } } diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs index 00daf72..1baa85a 100644 --- a/MainWindow.xaml.cs +++ b/MainWindow.xaml.cs @@ -8,7 +8,6 @@ namespace CryptoCalc public partial class MainWindow : Window { private readonly Random rand = new(); - private List transactions = new(); public MainWindow() { @@ -34,7 +33,7 @@ namespace CryptoCalc private void readButton_click(object sender, RoutedEventArgs e) { - transactions = DBInteraction.LoadTransactions(); + IEnumerable transactions = ReadTransactionFromDB(); foreach (Transaction x in transactions) { Debug.WriteLine($"{x.GetLocalTimeFromUnixTime(x.UnixTime)} *** {x.Currency} - {x.Amount}"); @@ -42,12 +41,20 @@ namespace CryptoCalc } private void searchButton_Click(object sender, RoutedEventArgs e) { - transactions = DBInteraction.LoadTransactionsOfCurrency(currencyText.Text); - transactionsFoundListBox.Items.Clear(); - foreach (Transaction x in transactions) - { - transactionsFoundListBox.Items.Add(x.FullInfo); - } + //IEnumerable transactions = ReadTransactionFromDB("Currency"); + //transactions = DBInteraction.LoadTransactionsOfCurrency(currencyText.Text); + //transactionsFoundListBox.Items.Clear(); + //foreach (Transaction x in transactions) + //{ + // transactionsFoundListBox.Items.Add(x.FullInfo); + //} + } + + private IEnumerable ReadTransactionFromDB() + { + Transaction t = new(); + DBInteraction.GenericDB db = new(); + return db.LoadAllData(t.DBTableName); } private Transaction DummyTransaction() From 38c160968a33ecb9bd2c5178ff0db02ee1533554 Mon Sep 17 00:00:00 2001 From: Stedd Date: Sat, 12 Feb 2022 14:38:30 +0100 Subject: [PATCH 2/2] Generic SQL interaction working --- DBInteraction.cs | 12 ++++++++++++ MainWindow.xaml.cs | 48 ++++++++++++++++++++++++++-------------------- 2 files changed, 39 insertions(+), 21 deletions(-) diff --git a/DBInteraction.cs b/DBInteraction.cs index 94489e6..0460c4b 100644 --- a/DBInteraction.cs +++ b/DBInteraction.cs @@ -16,6 +16,7 @@ namespace CryptoCalc { throw new ArgumentNullException(nameof(data)); } + using IDbConnection cnn = new SQLiteConnection(Util.GetConnectionString(data.DBTableName)); cnn.Execute($"insert into {data.DBTableName} {data.DBSaveDataString}", data); Debug.WriteLine($"Saved {data.DBTableName} DB data"); @@ -35,6 +36,17 @@ namespace CryptoCalc using IDbConnection _connection = new SQLiteConnection(Util.GetConnectionString(tableName)); return _connection.Query($"select * from {tableName}", new DynamicParameters()); } + + public IEnumerable QueryData(string tableName, string query) + { + if (tableName is null) + { + throw new ArgumentNullException(nameof(query)); + } + + using IDbConnection _connection = new SQLiteConnection(Util.GetConnectionString(tableName)); + return _connection.Query($"{query}", new DynamicParameters()); + } } } } diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs index 1baa85a..1ff8c63 100644 --- a/MainWindow.xaml.cs +++ b/MainWindow.xaml.cs @@ -9,6 +9,12 @@ namespace CryptoCalc { private readonly Random rand = new(); + private DBInteraction.GenericDB transactionDB = new(); + private DBInteraction.GenericDB walletDB = new(); + + private Transaction genericT = new(); + private Wallet genericW = new(); + public MainWindow() { InitializeComponent(); @@ -16,46 +22,46 @@ namespace CryptoCalc private void saveButton_Click(object sender, RoutedEventArgs e) { - Transaction dummy = DummyTransaction(); - DBInteraction.SaveData(ref dummy); + genericT = DummyTransaction(); + DBInteraction.SaveData(ref genericT); } private void saveWalletButton_Click(object sender, RoutedEventArgs e) { - Wallet dummy = DummyWallet(); - DBInteraction.SaveData(ref dummy); + genericW = DummyWallet(); + DBInteraction.SaveData(ref genericW); } private void saveButtonFromInput_Click(object sender, RoutedEventArgs e) { - Transaction rd = new(inputCurrency.Text, Convert.ToSingle(inputAmount.Text), inputType.Text); - DBInteraction.SaveData(ref rd); + genericT = new(inputCurrency.Text, Convert.ToSingle(inputAmount.Text), inputType.Text); + DBInteraction.SaveData(ref genericT); } private void readButton_click(object sender, RoutedEventArgs e) { - IEnumerable transactions = ReadTransactionFromDB(); - foreach (Transaction x in transactions) + IEnumerable transactions = transactionDB.LoadAllData(genericT.DBTableName); + foreach (Transaction t in transactions) { - Debug.WriteLine($"{x.GetLocalTimeFromUnixTime(x.UnixTime)} *** {x.Currency} - {x.Amount}"); + Debug.WriteLine($"{t.GetLocalTimeFromUnixTime(t.UnixTime)} *** {t.Currency} - {t.Amount}"); } } private void searchButton_Click(object sender, RoutedEventArgs e) { - //IEnumerable transactions = ReadTransactionFromDB("Currency"); + string query = $"SELECT * from {genericT.DBTableName} WHERE {nameof(genericT.Currency)}=\'{currencyText.Text}\'"; + IEnumerable transactions = transactionDB.QueryData(genericT.DBTableName, query); //transactions = DBInteraction.LoadTransactionsOfCurrency(currencyText.Text); - //transactionsFoundListBox.Items.Clear(); - //foreach (Transaction x in transactions) - //{ - // transactionsFoundListBox.Items.Add(x.FullInfo); - //} + transactionsFoundListBox.Items.Clear(); + foreach (Transaction x in transactions) + { + transactionsFoundListBox.Items.Add(x.FullInfo); + } } - private IEnumerable ReadTransactionFromDB() - { - Transaction t = new(); - DBInteraction.GenericDB db = new(); - return db.LoadAllData(t.DBTableName); - } + //private IEnumerable ReadTransactionFromDB() + //{ + // Transaction t = new(); + // return transactionDB.LoadAllData(t.DBTableName); + //} private Transaction DummyTransaction() {