read/write database is now functional again.

This commit is contained in:
Kuro 2025-03-08 22:15:40 +01:00
parent 00176a2d83
commit 21220f2018
5 changed files with 38 additions and 18 deletions

View File

@ -5,6 +5,10 @@ namespace ProgrammList.ConfigManager {
public static string GetSetting(string key) { public static string GetSetting(string key) {
try { try {
if (!File.Exists(Directory.GetCurrentDirectory() + "\\app.conf")) {
Console.WriteLine("app.conf does not exist, using defaults");
return "";
}
ExeConfigurationFileMap configMap = new ExeConfigurationFileMap(); ExeConfigurationFileMap configMap = new ExeConfigurationFileMap();
Console.WriteLine("Loading " + Directory.GetCurrentDirectory() + "\\app.conf"); Console.WriteLine("Loading " + Directory.GetCurrentDirectory() + "\\app.conf");
configMap.ExeConfigFilename = Directory.GetCurrentDirectory() + "\\app.conf"; configMap.ExeConfigFilename = Directory.GetCurrentDirectory() + "\\app.conf";
@ -14,6 +18,7 @@ namespace ProgrammList.ConfigManager {
catch (Exception e) { catch (Exception e) {
Console.WriteLine("Error on Key " + key + ": " + e.ToString()); Console.WriteLine("Error on Key " + key + ": " + e.ToString());
Console.WriteLine(e.ToString()); Console.WriteLine(e.ToString());
System.Environment.Exit(13);
} }
return "13"; return "13";
} }

View File

@ -9,6 +9,7 @@ namespace ProgrammList.ListPrograms {
string[] keyvaluenames = { "DisplayName", "DisplayVersion", "InstallDate" }; string[] keyvaluenames = { "DisplayName", "DisplayVersion", "InstallDate" };
private SqlBase sql = null; private SqlBase sql = null;
internal ListPrograms(string sqlType, params string[] filename) { internal ListPrograms(string sqlType, params string[] filename) {
if (sqlType == null) { if (sqlType == null) {
Console.WriteLine("SQL Database not defined in app.conf, allowed types:"); Console.WriteLine("SQL Database not defined in app.conf, allowed types:");
@ -19,19 +20,26 @@ namespace ProgrammList.ListPrograms {
throw new ArgumentNullException(); throw new ArgumentNullException();
} }
string sqlname = "";
if (sqlType.Equals("MYSQL", StringComparison.OrdinalIgnoreCase) || sqlType.Equals("MARIADB", StringComparison.OrdinalIgnoreCase)) { if (sqlType.Equals("MYSQL", StringComparison.OrdinalIgnoreCase) || sqlType.Equals("MARIADB", StringComparison.OrdinalIgnoreCase)) {
sql = new Mysql(); sql = new Mysql();
sqlname = "MySQL/MariaDB";
} }
else if (sqlType.Equals("MSSQL", StringComparison.OrdinalIgnoreCase)) { else if (sqlType.Equals("MSSQL", StringComparison.OrdinalIgnoreCase)) {
sql = new Mssql(); sql = new Mssql();
sqlname = "MSSQL";
} }
else if (sqlType.Equals("SQLITE", StringComparison.OrdinalIgnoreCase) && filename != null) { else if (sqlType.Equals("SQLITE", StringComparison.OrdinalIgnoreCase) && filename != null) {
sql = new Sqlite(prgm_path, filename[0]); sql = new Sqlite(prgm_path, filename[0]);
sqlname = "SQLITE";
} }
else { else {
// Default sqlite im gleichen ordner // Default sqlite im gleichen ordner
sql = new Sqlite(prgm_path, "sqllite.db"); sql = new Sqlite(prgm_path, "sqllite.db");
sqlname = "fallback default SQLITE";
} }
Console.WriteLine();
} }
internal void DeleteOldData() { internal void DeleteOldData() {

View File

@ -6,28 +6,32 @@ namespace ProgrammList.sql {
public class Mssql : SqlBase { public class Mssql : SqlBase {
public string[] valuenames = { "PCID", "DisplayName", "DisplayVersion", "InstallDate", "update_date", "APP_Architecture" }; public string[] valuenames = { "PCID", "DisplayName", "DisplayVersion", "InstallDate", "update_date", "APP_Architecture" };
public string connstring = null;
string constring = null;
SqlConnection mssqlcon = null; SqlConnection mssqlcon = null;
SqlConnectionStringBuilder builder;
//private static Dbconnection instance; //private static Dbconnection instance;
public Mssql() { public Mssql() {
var builder = new SqlConnectionStringBuilder { builder = new SqlConnectionStringBuilder {
DataSource = "localhost", DataSource = "localhost",
UserID = "sa", UserID = "sa",
Password = "2677890E23", Password = "2677890E23",
InitialCatalog = "prgmlist", InitialCatalog = "prgmlist",
TrustServerCertificate = true TrustServerCertificate = true
}; };
constring = builder.ToString();
} }
public void Open() { public void Open() {
mssqlcon.Open(); try {
mssqlcon = new SqlConnection(builder.ConnectionString);
mssqlcon.Open();
}
catch (Exception ex) {
System.Environment.Exit(13);
}
} }
public void Close() { public void Close() {
@ -71,12 +75,7 @@ namespace ProgrammList.sql {
throw new FormatException(); throw new FormatException();
} }
if (rc > 0) { return;
Console.WriteLine("Creating table...");
}
else {
return;
}
} }
var cols = string.Join(" VARCHAR(255),", valuenames); var cols = string.Join(" VARCHAR(255),", valuenames);
cols = cols + " Varchar(255)"; cols = cols + " Varchar(255)";
@ -107,7 +106,6 @@ namespace ProgrammList.sql {
var command = new SqlCommand(sqlCommand, mssqlcon, transaction); var command = new SqlCommand(sqlCommand, mssqlcon, transaction);
command.ExecuteNonQuery(); command.ExecuteNonQuery();
transaction.Commit(); transaction.Commit();
Console.WriteLine(sqlCommand);
Close(); Close();
} }
@ -155,7 +153,6 @@ namespace ProgrammList.sql {
command.Parameters.AddWithValue("$" + valuenames[i], value.GetValueOrDefault(valuenames[i])); command.Parameters.AddWithValue("$" + valuenames[i], value.GetValueOrDefault(valuenames[i]));
} }
} }
Console.WriteLine(sqlCommand);
command.ExecuteNonQuery(); command.ExecuteNonQuery();
transaction.Commit(); transaction.Commit();
Close(); Close();

View File

@ -3,7 +3,7 @@
namespace ProgrammList.sql { namespace ProgrammList.sql {
internal class Mysql { internal class Mysql : SqlBase {
public string[] valuenames = { "PCID", "DisplayName", "DisplayVersion", "InstallDate", "update_date", "APP_Architecture" }; public string[] valuenames = { "PCID", "DisplayName", "DisplayVersion", "InstallDate", "update_date", "APP_Architecture" };
public string connstring = null; public string connstring = null;
public MySqlConnection mysqlcon = null; public MySqlConnection mysqlcon = null;
@ -67,7 +67,6 @@ namespace ProgrammList.sql {
var command = new MySqlCommand(sqlCommand, mysqlcon, transaction); var command = new MySqlCommand(sqlCommand, mysqlcon, transaction);
command.ExecuteNonQuery(); command.ExecuteNonQuery();
transaction.Commit(); transaction.Commit();
Console.WriteLine(sqlCommand);
Close(); Close();
} }
@ -106,7 +105,7 @@ namespace ProgrammList.sql {
command.Parameters.AddWithValue("$" + valuenames[i], value.GetValueOrDefault(valuenames[i])); command.Parameters.AddWithValue("$" + valuenames[i], value.GetValueOrDefault(valuenames[i]));
} }
} }
Console.WriteLine(sqlCommand);
command.ExecuteNonQuery(); command.ExecuteNonQuery();
transaction.Commit(); transaction.Commit();
Close(); Close();

View File

@ -42,6 +42,7 @@ namespace ProgrammList.sql {
} }
public bool GetSingleLine(string pcid, string program, string version) { public bool GetSingleLine(string pcid, string program, string version) {
Open();
var command = sqlitecon.CreateCommand(); var command = sqlitecon.CreateCommand();
command.CommandText = @"SELECT * FROM list where PCID like " command.CommandText = @"SELECT * FROM list where PCID like "
+ pcid + " and DisplayName like " + pcid + " and DisplayName like "
@ -49,11 +50,12 @@ namespace ProgrammList.sql {
bool result = command.ExecuteReader().Read(); bool result = command.ExecuteReader().Read();
Close();
return result; return result;
} }
public void CheckTableExists() { public void CheckTableExists() {
Open();
var command = sqlitecon.CreateCommand(); var command = sqlitecon.CreateCommand();
command.CommandText = @"SELECT name FROM sqlite_master WHERE type='table' AND name='list';"; command.CommandText = @"SELECT name FROM sqlite_master WHERE type='table' AND name='list';";
var name = command.ExecuteScalar(); var name = command.ExecuteScalar();
@ -64,10 +66,12 @@ namespace ProgrammList.sql {
cols = cols + " Varchar"; cols = cols + " Varchar";
command.CommandText = "CREATE TABLE list (" + cols + ")"; command.CommandText = "CREATE TABLE list (" + cols + ")";
command.ExecuteNonQuery(); command.ExecuteNonQuery();
Close();
} }
public void InsertData(Dictionary<string, string> valuesqlCommand) { public void InsertData(Dictionary<string, string> valuesqlCommand) {
Open();
var transaction = sqlitecon.BeginTransaction(); var transaction = sqlitecon.BeginTransaction();
string result = ""; string result = "";
@ -88,6 +92,7 @@ namespace ProgrammList.sql {
Console.WriteLine(sqlCommand); Console.WriteLine(sqlCommand);
command.ExecuteNonQuery(); command.ExecuteNonQuery();
transaction.Commit(); transaction.Commit();
Close();
} }
public void InsertOrUpdateData(Dictionary<string, string> value) { public void InsertOrUpdateData(Dictionary<string, string> value) {
@ -104,13 +109,16 @@ namespace ProgrammList.sql {
} }
public void DeleteOldData(string hostname) { public void DeleteOldData(string hostname) {
Open();
var command = sqlitecon.CreateCommand(); var command = sqlitecon.CreateCommand();
string sqlCommand = @"delete from list where PCID = '" + hostname + "';"; string sqlCommand = @"delete from list where PCID = '" + hostname + "';";
command.CommandText = sqlCommand; command.CommandText = sqlCommand;
command.ExecuteReader(); command.ExecuteReader();
Close();
} }
public void UpdateData(Dictionary<string, string> value) { public void UpdateData(Dictionary<string, string> value) {
Open();
var transaction = sqlitecon.BeginTransaction(); var transaction = sqlitecon.BeginTransaction();
string sqlCommand = @"Update list "; string sqlCommand = @"Update list ";
@ -139,9 +147,11 @@ namespace ProgrammList.sql {
Console.WriteLine(command.CommandText); Console.WriteLine(command.CommandText);
command.ExecuteNonQuery(); command.ExecuteNonQuery();
transaction.Commit(); transaction.Commit();
Close();
} }
public void DeleteData(string id) { public void DeleteData(string id) {
Open();
var command = sqlitecon.CreateCommand(); var command = sqlitecon.CreateCommand();
command.CommandText = @"SELECT name FROM user WHERE id = $id"; command.CommandText = @"SELECT name FROM user WHERE id = $id";
command.Parameters.AddWithValue("$id", id); command.Parameters.AddWithValue("$id", id);
@ -151,6 +161,7 @@ namespace ProgrammList.sql {
var name = reader.GetString(0); var name = reader.GetString(0);
} }
} }
Close();
} }
} }