Ich blieb nach ein paar Stunden der Forschung stecken. Ich versuche, eine grundlegende universelle Windows-App mit Login-Formular zu machen - nach dem Klicken auf eine Schaltfläche, Anmeldeinformationen in Textfeldern werden mit Remote-MySQL-Datenbank überprüft. Falls gültig, sollte die App zu einer anderen angegebenen Seite navigieren. Wenn nicht, wird eine Fehlermeldung angezeigt.C# UWP Login Formular Überprüfung der Anmeldeinformationen in MySQL Remote-Datenbank
Ich kann keinen Fehler in meinem Code unten finden. Nach dem Klick auf den Button Windows springt der blaue Kreis und nach einigen Sekunden kehrt er zu VS2017 zurück. Keine Fehler und Warnungen. State.ToString() gibt 'Open' zurück, also habe ich eine Verbindung mit DB. Was mache ich falsch?
public sealed partial class MainPage : Page
{
const string connString = "server=my_server;pwd=pass;uid=user_id;database=mydb;persistsecurityinfo=True";
MySqlConnection conn = new MySqlConnection(connString);
public MainPage()
{
this.InitializeComponent();
}
private void DbConnection()
{
try
{
conn.Open();
}
catch (MySqlException e)
{
throw;
}
}
private bool DataValidation(string user, string pass)
{
DbConnection();
MySqlCommand cmd = new MySqlCommand("SELECT Username, Password FROM Users WHERE [email protected] AND [email protected];");
cmd.Parameters.AddWithValue("@user", user);
cmd.Parameters.AddWithValue("@pass", pass);
cmd.Connection = conn;
MySqlDataReader login = cmd.ExecuteReader();
if (login.Read())
{
conn.Close();
return true;
}
else
{
conn.Close();
return false;
}
}
private void LoginBtn_Click(object sender, RoutedEventArgs e)
{
string user = UserTextBox.Text;
string pass = PassTextBox.Text;
if (user == "" || pass == "")
{
StatusTextBlock.Text = ("No emty fields allowed. Try again...");
return;
}
bool loginSuccessful = DataValidation(user, pass);
if (loginSuccessful)
{
this.Frame.Navigate(typeof(Page2), null);
}
else
{
StatusTextBlock.Text = "Invalid e-mail or password. Try again...";
}
}
}
'State.ToString()' Was ist 'State'? Es ist nicht in deinem Code. – mjwills
Ich würde vorschlagen, 'MySqlConnection conn = new MySqlConnection (connString);' innerhalb von 'DataValidation' zu verschieben und' DbConnection' zu entfernen. Verwenden Sie dann einen 'using'-Block, um ihn automatisch zu disposieren (schließen). – mjwills
Nein, es ist nicht in meinem Code oben, aber StatusTextBox.Text = conn.State.ToString() gibt Verbindungsstatus zurück, der offen zu sein scheint – grAVEr666