0

こんにちは、私は C# の世界と Visual Studio 2012 の初心者です.....私は MySql でデータベースを作成し、サーバー上の唯一のデータベースに対して異なる権限を持つ複数のユーザーを作成しました。MySql サーバーで作成したすべてのユーザーがログインできるようにする WPF を使用してログイン GUI を作成したいと考えています。コード内のすべてのユーザー名とパスワードを使用して接続文字列を記述せずに、これは可能ですか? どんな助けでも大歓迎です。

4

2 に答える 2

0

まず、ユーザーの接続文字列を簡単に作成するために呼び出すことができるメソッドが必要です。これは基本的に、ユーザーが提供するユーザー名とパスワードを文字列に埋め込むことになります。ユーザーは;を含む任意の文字を選択できることに注意してください。これは、接続文字列「language」で予約されています。次の 2 つのサイトを参照することをお勧めします。

http://www.connectionstrings.com/formating-rules-for-connection-strings/ http://www.connectionstrings.com/mysql/

文字列をフォーマットする方法の概要を理解する。単純に置き換え ます; 「;」で 、これは文字をエスケープする正しい方法です ; .

class ConnectionStrings
{
    private static string SERVER_ADDRESS = "127.0.0.1";
    private static string DATABASE = "mydb";

    private static string EscapeConnectionStringValue(string value)
    {
        return value.Replace(";", "\";\"");
    }

    public static string GetConnectionString(string username, string password)
    {
        var escapedUsername = EscapeConnectionStringValue(username);
        var escapedPassword = EscapeConnectionStringValue(password);
        var connectionString = string.Format("Server={0};Database={1};Uid={2};Pwd={3};", SERVER_ADDRESS, DATABASE, escapedUsername, escapedPassword);

        return connectionString;
    }
}

これを WPF アプリにする場合は、Visual Studio でそのようなプロジェクト タイプを作成し、ファイルMainWindow.xamlを変更して、Window 要素に次のようなStackPanel要素が含まれるようにします。Window要素自体は変更しないでください。

<Window !!!don't change anything inside the Window Element!!!>
    <StackPanel>
        <TextBox Name="username"></TextBox>
        <PasswordBox Name="password"></PasswordBox>
        <Button Name="login" Click="login_Click">Login</Button>
    </StackPanel>
</Window>

最後に、ファイルMainWindow.xaml.csを変更して、ユーザーが [ログイン] ボタンをクリックしたときに実行されるコードが含まれるようにします。

private void login_Click(object sender, RoutedEventArgs e)
{
    var connectionString = ConnectionStrings.GetConnectionString(username.Text, password.Password);
    MessageBox.Show(connectionString);
}

この場合、作成したばかりの接続文字列を含むメッセージ ボックスを表示しているだけです。

于 2013-08-20T02:46:35.073 に答える