From 21220f2018816480a457f3cf491fec95b3fb9467 Mon Sep 17 00:00:00 2001 From: Kuro Date: Sat, 8 Mar 2025 22:15:40 +0100 Subject: [PATCH] read/write database is now functional again. --- ProgrammList/ConfigManager/ConfigManager.cs | 5 +++++ ProgrammList/list_creation/ListPrograms.cs | 8 +++++++ ProgrammList/sql/Mssql.cs | 25 +++++++++------------ ProgrammList/sql/MySql.cs | 5 ++--- ProgrammList/sql/Sqlite.cs | 13 ++++++++++- 5 files changed, 38 insertions(+), 18 deletions(-) diff --git a/ProgrammList/ConfigManager/ConfigManager.cs b/ProgrammList/ConfigManager/ConfigManager.cs index 198815a..5434823 100644 --- a/ProgrammList/ConfigManager/ConfigManager.cs +++ b/ProgrammList/ConfigManager/ConfigManager.cs @@ -5,6 +5,10 @@ namespace ProgrammList.ConfigManager { public static string GetSetting(string key) { try { + if (!File.Exists(Directory.GetCurrentDirectory() + "\\app.conf")) { + Console.WriteLine("app.conf does not exist, using defaults"); + return ""; + } ExeConfigurationFileMap configMap = new ExeConfigurationFileMap(); Console.WriteLine("Loading " + Directory.GetCurrentDirectory() + "\\app.conf"); configMap.ExeConfigFilename = Directory.GetCurrentDirectory() + "\\app.conf"; @@ -14,6 +18,7 @@ namespace ProgrammList.ConfigManager { catch (Exception e) { Console.WriteLine("Error on Key " + key + ": " + e.ToString()); Console.WriteLine(e.ToString()); + System.Environment.Exit(13); } return "13"; } diff --git a/ProgrammList/list_creation/ListPrograms.cs b/ProgrammList/list_creation/ListPrograms.cs index db2a5e6..594ce6d 100644 --- a/ProgrammList/list_creation/ListPrograms.cs +++ b/ProgrammList/list_creation/ListPrograms.cs @@ -9,6 +9,7 @@ namespace ProgrammList.ListPrograms { string[] keyvaluenames = { "DisplayName", "DisplayVersion", "InstallDate" }; private SqlBase sql = null; + internal ListPrograms(string sqlType, params string[] filename) { if (sqlType == null) { Console.WriteLine("SQL Database not defined in app.conf, allowed types:"); @@ -19,19 +20,26 @@ namespace ProgrammList.ListPrograms { throw new ArgumentNullException(); } + string sqlname = ""; if (sqlType.Equals("MYSQL", StringComparison.OrdinalIgnoreCase) || sqlType.Equals("MARIADB", StringComparison.OrdinalIgnoreCase)) { sql = new Mysql(); + sqlname = "MySQL/MariaDB"; } else if (sqlType.Equals("MSSQL", StringComparison.OrdinalIgnoreCase)) { sql = new Mssql(); + sqlname = "MSSQL"; } else if (sqlType.Equals("SQLITE", StringComparison.OrdinalIgnoreCase) && filename != null) { sql = new Sqlite(prgm_path, filename[0]); + sqlname = "SQLITE"; } else { // Default sqlite im gleichen ordner sql = new Sqlite(prgm_path, "sqllite.db"); + sqlname = "fallback default SQLITE"; } + + Console.WriteLine(); } internal void DeleteOldData() { diff --git a/ProgrammList/sql/Mssql.cs b/ProgrammList/sql/Mssql.cs index 4d2f2ea..682b091 100644 --- a/ProgrammList/sql/Mssql.cs +++ b/ProgrammList/sql/Mssql.cs @@ -6,28 +6,32 @@ namespace ProgrammList.sql { public class Mssql : SqlBase { public string[] valuenames = { "PCID", "DisplayName", "DisplayVersion", "InstallDate", "update_date", "APP_Architecture" }; - public string connstring = null; - string constring = null; SqlConnection mssqlcon = null; + SqlConnectionStringBuilder builder; + //private static Dbconnection instance; public Mssql() { - var builder = new SqlConnectionStringBuilder { + builder = new SqlConnectionStringBuilder { DataSource = "localhost", UserID = "sa", Password = "2677890E23", InitialCatalog = "prgmlist", TrustServerCertificate = true }; - - constring = builder.ToString(); } public void Open() { - mssqlcon.Open(); + try { + mssqlcon = new SqlConnection(builder.ConnectionString); + mssqlcon.Open(); + } + catch (Exception ex) { + System.Environment.Exit(13); + } } public void Close() { @@ -71,12 +75,7 @@ namespace ProgrammList.sql { throw new FormatException(); } - if (rc > 0) { - Console.WriteLine("Creating table..."); - } - else { - return; - } + return; } var cols = string.Join(" VARCHAR(255),", valuenames); cols = cols + " Varchar(255)"; @@ -107,7 +106,6 @@ namespace ProgrammList.sql { var command = new SqlCommand(sqlCommand, mssqlcon, transaction); command.ExecuteNonQuery(); transaction.Commit(); - Console.WriteLine(sqlCommand); Close(); } @@ -155,7 +153,6 @@ namespace ProgrammList.sql { command.Parameters.AddWithValue("$" + valuenames[i], value.GetValueOrDefault(valuenames[i])); } } - Console.WriteLine(sqlCommand); command.ExecuteNonQuery(); transaction.Commit(); Close(); diff --git a/ProgrammList/sql/MySql.cs b/ProgrammList/sql/MySql.cs index 3439983..c602ffd 100644 --- a/ProgrammList/sql/MySql.cs +++ b/ProgrammList/sql/MySql.cs @@ -3,7 +3,7 @@ namespace ProgrammList.sql { - internal class Mysql { + internal class Mysql : SqlBase { public string[] valuenames = { "PCID", "DisplayName", "DisplayVersion", "InstallDate", "update_date", "APP_Architecture" }; public string connstring = null; public MySqlConnection mysqlcon = null; @@ -67,7 +67,6 @@ namespace ProgrammList.sql { var command = new MySqlCommand(sqlCommand, mysqlcon, transaction); command.ExecuteNonQuery(); transaction.Commit(); - Console.WriteLine(sqlCommand); Close(); } @@ -106,7 +105,7 @@ namespace ProgrammList.sql { command.Parameters.AddWithValue("$" + valuenames[i], value.GetValueOrDefault(valuenames[i])); } } - Console.WriteLine(sqlCommand); + command.ExecuteNonQuery(); transaction.Commit(); Close(); diff --git a/ProgrammList/sql/Sqlite.cs b/ProgrammList/sql/Sqlite.cs index ccb4c47..c4e193b 100644 --- a/ProgrammList/sql/Sqlite.cs +++ b/ProgrammList/sql/Sqlite.cs @@ -42,6 +42,7 @@ namespace ProgrammList.sql { } public bool GetSingleLine(string pcid, string program, string version) { + Open(); var command = sqlitecon.CreateCommand(); command.CommandText = @"SELECT * FROM list where PCID like " + pcid + " and DisplayName like " @@ -49,11 +50,12 @@ namespace ProgrammList.sql { bool result = command.ExecuteReader().Read(); - + Close(); return result; } public void CheckTableExists() { + Open(); var command = sqlitecon.CreateCommand(); command.CommandText = @"SELECT name FROM sqlite_master WHERE type='table' AND name='list';"; var name = command.ExecuteScalar(); @@ -64,10 +66,12 @@ namespace ProgrammList.sql { cols = cols + " Varchar"; command.CommandText = "CREATE TABLE list (" + cols + ")"; command.ExecuteNonQuery(); + Close(); } public void InsertData(Dictionary valuesqlCommand) { + Open(); var transaction = sqlitecon.BeginTransaction(); string result = ""; @@ -88,6 +92,7 @@ namespace ProgrammList.sql { Console.WriteLine(sqlCommand); command.ExecuteNonQuery(); transaction.Commit(); + Close(); } public void InsertOrUpdateData(Dictionary value) { @@ -104,13 +109,16 @@ namespace ProgrammList.sql { } public void DeleteOldData(string hostname) { + Open(); var command = sqlitecon.CreateCommand(); string sqlCommand = @"delete from list where PCID = '" + hostname + "';"; command.CommandText = sqlCommand; command.ExecuteReader(); + Close(); } public void UpdateData(Dictionary value) { + Open(); var transaction = sqlitecon.BeginTransaction(); string sqlCommand = @"Update list "; @@ -139,9 +147,11 @@ namespace ProgrammList.sql { Console.WriteLine(command.CommandText); command.ExecuteNonQuery(); transaction.Commit(); + Close(); } public void DeleteData(string id) { + Open(); var command = sqlitecon.CreateCommand(); command.CommandText = @"SELECT name FROM user WHERE id = $id"; command.Parameters.AddWithValue("$id", id); @@ -151,6 +161,7 @@ namespace ProgrammList.sql { var name = reader.GetString(0); } } + Close(); } }