数時間の研究が終わってしまいました。私は、ログインフォームで基本的なユニバーサルWindowsアプリケーションを作ろうとしています - ボタンをクリックした後、テキストボックスの認証情報はリモートのMySQLデータベースでチェックされます。有効な場合、アプリは指定された別のページに移動します。そうでない場合、エラーメッセージが表示されます。C#UWP MySQLリモートデータベースのログインフォームの資格情報を確認する
以下のコードでエラーが見つかりません。ボタンをクリックすると、Windowsの青い円が回転し、数秒後にVS2017に戻ります。エラーや警告はありません。私はDBとの接続を持っているので、State.ToString()は 'オープン'を返します。私は間違っているの?
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()' 'State'は何ですか?それはあなたのコードではありません。 – mjwills
私は 'DataValidation'の中で' MySqlConnection conn = new MySqlConnection(connString); 'を移動し、' DbConnection'を削除することをお勧めします。そして 'using'ブロックを使って自動的にDispose(Close)します。 – mjwills
これは私のコードではありませんが、StatusTextBox.Text = conn.State.ToString()は開いていると思われる接続状態を返します – grAVEr666