请给我提意见。我正在尝试使用Mysql服务器数据库在WPF中开发Windows应用程序。

我必须使用哪种方法在Mysql数据库上建立连接?

1)实体框架
要么
2)ADO.NET
要么
3)其他

管理员计算机需要在其计算机上安装mysql数据库,然后将mysql数据库访问网络连接的另一个(10个或更多)客户端系统。

在这里,仅在管理计算机内有一个MySql数据库。并且所有其他客户端计算机都通过管理员的计算机IP地址访问MySql数据库。 IP连接字符串是这样的:

 @"Data Source=10.0.0.101


另一件事是,客户要求在客户端计算机上安装.exe文件时,还必须自动安装mysql服务器数据库(即xampp或其他ect ..)。

我怎样才能做到这一点?

我已经尝试过,用ADO.NET C#代替EF来为wpf Windows应用程序连接mysql。像那样 :-

public void AddUserList( UserSetUp user)
    {

        dbConnection.Open();
        string query = "INSERT INTO Tble_UserSetUp (FirstName, SurName, Email, PhoneNumber, UserName, Password,Computer_Name,IP_Address,CreatedBy, CreatedDate,IsActive,Function,Department) VALUES (@FirstName, @SurName, @Email, @PhoneNumber, @UserName, @Password,@Computer_Name,@IP_Address,@CreatedBy, @CreatedDate,@IsActive,@Function,@Department)";
        MySqlCommand insertSQL = new MySqlCommand(query, (MySqlConnection)dbConnection);
        insertSQL.Parameters.AddWithValue("@FirstName", user.FirstName);
        insertSQL.Parameters.AddWithValue("@SurName", user.SurName);
        insertSQL.Parameters.AddWithValue("@Email", user.Email);
        insertSQL.Parameters.AddWithValue("@PhoneNumber", user.PhoneNumber);
        insertSQL.Parameters.AddWithValue("@UserName", Encrypt(user.UserName));
        insertSQL.Parameters.AddWithValue("@Password", Encrypt(user.Password));
        insertSQL.Parameters.AddWithValue("@Computer_Name", user.Computer_Name);
        insertSQL.Parameters.AddWithValue("@IP_Address", user.IP_Address);
        insertSQL.Parameters.AddWithValue("@CreatedBy", user.CreatedBy);
        insertSQL.Parameters.AddWithValue("@CreatedDate", user.CreatedDate);
        insertSQL.Parameters.AddWithValue("@IsActive", user.IsActive);
        insertSQL.Parameters.AddWithValue("@Function", user.Function);
        insertSQL.Parameters.AddWithValue("@Department", user.Department);
        try
        {
            insertSQL.ExecuteNonQuery();
            dbConnection.Close();
        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
    }


这不是一个好主意,而不是使用Entity Framework或另一个?

最佳答案

public partial class MainWindow : Window
{
    /*mysql
     *
     * 1. add nuget mysql.data.dll(desktop application)
     * 2. using MySql.Data.MySqlClient;
     * 3. code like bellow , you can try
     */
    private StringBuilder sb = new StringBuilder();
    public MainWindow()
    {
        InitializeComponent();
        mysql();
        tbx.Text = sb.ToString();
    }
    private void mysql()
    {
        try
        {
            var connstr = "Server=localhost;Uid=root;Pwd=123456;database=world";
            using (var conn = new MySqlConnection(connstr))
            {
                conn.Open();

                using (var cmd = conn.CreateCommand())
                {
                    cmd.CommandText = "select * from city where countryCode= @ID";
                    cmd.Parameters.AddWithValue("@ID", "100");
                    using (var reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            var ii = reader.FieldCount;
                            for (int i = 0; i < ii; i++)
                            {
                                if (reader[i] is DBNull)
                                    sb.AppendLine("null");
                                else
                                    sb.AppendLine(reader[i].ToString());
                            }

                        }
                    }
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }
}

10-07 19:57
查看更多