0

大家好,我是 C# 世界和 Visual Studio 2012 的新手.....我在 MySql 中创建了一个数据库并创建了几个对服务器上唯一数据库具有不同权限的用户。我想用 WPF 创建一个登录 GUI,它允许我在 MySql 服务器中创建的任何用户登录。如果不使用代码中的所有用户名和密码编写连接字符串,这是否可能?任何帮助将不胜感激。

4

2 回答 2

0

首先,您需要一个可以调用的方法来轻松地为用户构建连接字符串。这基本上归结为将用户提供的用户名和密码嵌入到字符串中。请记住,用户可以选择任何字符,包括; 它保留在连接字符串“语言”中。我建议你看看这两个网站:

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 回答
0

这应该没有问题。您只需要为用户提供两个文本框来输入他们的用户名和密码并在后面的代码中生成连接字符串(或者更好地通过 MVVM 模式)

于 2013-08-19T15:46:20.523 回答