//DB-Worker
public class Datenbank
{
int _ping_timeout_ms = 3000;
int _ping_retry_sec = 2;
string connectionstring {
get {
MySqlConnectionStringBuilder csb = new MySqlConnectionStringBuilder();
csb.Server = Settings.getValue(„MYSQL_Server“);
csb.Port = uint.Parse(Settings.getValue(„MYSQL_Port“));
csb.Database = Settings.getValue(„MYSQL_Database“);
csb.UserID = Settings.getValue(„MYSQL_User“);
csb.Password = Settings.getValue(„MYSQL_Pass“);
csb.ConvertZeroDateTime = true;
csb.AllowUserVariables = true;
//csb.Pooling = false;
//csb.ConnectionLifeTime = 10;
//csb.ConnectionTimeout = 5;
// csb.Pooling = true;
// csb.MaximumPoolSize = 50;
// csb.MinimumPoolSize = 10;
// csb.ConnectionLifeTime = 0;
// csb.ConnectionTimeout = 30;
// csb.UseCompression = true;
return csb.ToString();
return „Server=“+Settings.getValue(„MYSQL_Server“)
+“; Port=“+Settings.getValue(„MYSQL_Port“)
+“; DATABASE=“+Settings.getValue(„MYSQL_Database“)+
„; UID=“+Settings.getValue(„MYSQL_User“)+
„; PASSWORD=“+Settings.getValue(„MYSQL_Pass“)+
„;ConvertZeroDateTime=True;Allow User Variables=True;“;
}
}
public Hashtable GetLine(string querry, Hashtable querryset)
{
using(MySqlConnection connection = new MySqlConnection(connectionstring))
{
using(MySqlCommand command = new MySqlCommand(querry, connection))
{
if(querryset != null)
foreach(DictionaryEntry entry in querryset)
command.Parameters.AddWithValue(entry.Key.ToString(), entry.Value.ToString());
try
{
connection.Open();
MySqlDataReader myReader;
myReader = command.ExecuteReader();
if(!myReader.Read()) return null;
Hashtable Line = new Hashtable(); //Speichert einzelne Zeilen
for(int i=0;i<myReader.FieldCount;i++)
{
if(myReader.IsDBNull(i)) //Bugfix – null value
Line.Add(myReader.GetName(i),““);
else if (myReader.GetDataTypeName(i)==“DATE“)
Line.Add(myReader.GetName(i),myReader.GetDateTime(i)); //Bugfix..
else if(myReader.GetDataTypeName(i)==“BOOLEAN“)
Line.Add(myReader.GetDataTypeName(i),myReader.GetBoolean(i));
else
Line.Add(myReader.GetName(i),myReader.GetString(i));
}
myReader.Close();
connection.Close();
return Line;
}
catch(MySqlException ex)
{
Logger.Error(„GetLine(): DATABASE ERROR!“,querry+“\t“ +ex.Message);
return null;
}
}
}
}
}
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//DB-Klasse:
public class DBKlasse
{
….
protected Hashtable Daten;
…
protected void fillTable()
{
System.Diagnostics.Stopwatch t = new System.Diagnostics.Stopwatch();
Logger.Info(„Filltable() start: „+Table, UUID);
t.Start();
Hashtable daten = Program.DB.GetLine(„SELECT * FROM `“+Table+“` WHERE `UUID`='“+UUID+“‚;“,null);
if(daten == null) Logger.Error(„DBKlasse(UUID)“, „UUID nicht gefunden??“);
else Daten = daten;
t.Stop();
Logger.Info(„Filltable() finish: „+Table,“Time: „+t.ElapsedMilliseconds+“ „+UUID);
}
….
public string getString(string Fieldname)
{
if(Daten.ContainsKey(Fieldname)) return Daten[Fieldname].ToString();
Logger.Error(„DbKlasse.Getstring()“,“Fieldname not found: „+Fieldname);
return „“;
}
….
}
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//Artikel-Klasse:
public class Artikel : DBKlasse
{
private double temp_preis;
private string temp_bezeichnung;
public int Stückzahl; //Temp-Variable um Stückzahl zu speichern
public double Preis
{
get
{
if(UUID == „“) return temp_preis;
double ret;
if(double.TryParse(getString(„VK“),out ret))
return ret;
Logger.Error(„Artikel.getPreis():“,“Konversation fehlgeschlagen! ArtikelID: „+UUID+“, VK: „+getString(„VK“));
return 0;
}
set
{
if( UUID == „“) temp_preis = value;
else
{
setValue(„VK“,value.ToString());
}
}
}
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//Auswertung – hier sind so ca 30 Artikel in die abgefragt werden
foreach(DictionaryEntry artikel in artikelliste)
{
// hole jeden Preis aus der Datenbank
replacer.Add(field,Artikelobjekt.Preis.ToString(Settings.Preisformat_Int));
}