Ich habe eine POS-ähnliche Anwendung entwickelt und beim Testen mit 2 PCs hatte ich keine Probleme mit der Geschwindigkeit. Es ist nur ein einfaches LAN-Kabel-Setup zwischen zwei Computern. Aber als ich es in einem Client bereitgestellt habe, lief es langsam.C# - Warum ist MySQL Server in meiner Servermaschine langsam?
Der Client hat 1 PC als Admin und den Hauptserver, und es gibt 2 weitere PCs als Kassierer. Alle in einem Router verbunden. Die Kassierer sind mit dem Admin-PC (Hauptserver) verbunden, um Daten abzurufen, einzufügen, zu aktualisieren und zu löschen. Ich möchte nur fragen, ob es Prozesse gibt, die in MySQL ausgeführt werden müssen oder ob irgendetwas mit meinen Codes falsch ist, wenn ich mich mit der Datenbank verbinde.
Hier ist mein Beispielcode für die Verbindung mit der Datenbank, ich habe Zweifel, Probleme damit, wie dies der Standard bei der Verbindung zu einer Datenbank und Hinzufügen von Datensätzen war. Nur für den Fall, dass ich Sie mit Codes langweilen könnte, können Sie einfach zu dem zweiten Code springen, den ich gepostet habe. Ich habe dort einen Kommentar, ob die Initialisierung meiner Klasse korrekt ist. Danke allen!
class DBConnection
{
private MySqlConnection connection;
private MySqlCommand cmd;
private MySqlDataReader dr;
private DataTable tbl;
private MySqlDataAdapter da;
private DataSet ds;
private string connectionString;
private string server;
private string database;
private string uid;
private string password;
private frmNotifOk myNotification;
public DBConnection()
{
Initialize();
}
private void Initialize()
{
server = "CASHIER";
database = "sampledb";
uid = "root";
password = "samplepassword";
connectionString = "SERVER=" + server + ";" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";
connection = new MySqlConnection(connectionString);
}
private bool OpenConnection()
{
try
{
connection.Open();
return true;
}
catch (MySqlException ex)
{
switch (ex.Number)
{
case 0:
MessageBox.Show("Cannot connect to server.");
break;
}
return false;
}
}
private void CloseConnection()
{
try
{
connection.Close();
}
catch (MySqlException ex)
{
MessageBox.Show("Error: " + ex.Message);
}
}
public void AddRecord(String DBQuery, bool showNotif)
{
string query = DBQuery;
bool notify = showNotif;
try
{
if (this.OpenConnection() == true)
{
cmd = new MySqlCommand(query, connection);
cmd.ExecuteNonQuery();
if (notify)
{
MessageBox.Show("Item successfully added.");
}
}
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
}
finally
{
this.CloseConnection();
}
}
Und schließlich ist hier, wie ich die Methode in einem Formular verwenden:
public partial class frmNewCashier : Form
{
private DBConnection dbConnect;
string sampleDataSource= "SELECT * FROM SampleTable";
public frmNewCashier()
{
InitializeComponent();
//Is this the correct place of initializing my DBConnection class?
dbConnect = new DBConnection();
}
private void frmCashier_Load(object sender, EventArgs e)
{
try
{
dgvSearchItems.DataSource = dbConnect.DatabaseToDatagrid(dgvSearchItemsDataSource);
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
}
}
}
ich in public frmNewCashier()
die Initialisierung von DBConnection Klasse setzen, dann ist dies der richtige Ort, oder sollte ich es in Load-Ereignis oder irgendwo? Ich denke, wenn das mit der Langsamkeit der Datenbank zusammenhängt. Abgesehen von dieser Frage, weißt du etwas, das ich vermisst habe, das die Langsamkeit verursacht?
Ich schließe immer die Verbindung in das 'finally' von' try catch' ein, damit habe ich keine Probleme damit. Angenommen, der Debug-Punkt ist derselbe wie der Break-Point, was ich verwende, woher weiß ich, ob es zu viel Zeit in Anspruch nimmt? Gibt es eine Funktion im Haltepunkt, die die Zeit misst? Oder sollte ich es nur manuell überprüfen, wenn es Zeit braucht, etwas auszuführen? –
hast du versucht, Server zu bedienen? Wie lange hat es gedauert? –
gibt es eine Option ti Ausführungszeit für Methoden in Visual Studio zu überprüfen, was ist die Version von vs Sie verwenden? –