简体   繁体   English

如何使用 WPF 在 C#.NET 中访问 MySql 数据库?

[英]How do I access MySql database in C#.NET with WPF?

Please advise me.请给我提意见。 I am trying to develop Windows Application in WPF with Mysql server database.我正在尝试使用 Mysql 服务器数据库在 WPF 中开发 Windows 应用程序。

Which approach I have to use to create connection establish on the Mysql database?我必须使用哪种方法在 Mysql 数据库上创建连接?

1) Entity Framework OR 2) ADO.NET OR 3) Other one 1) 实体框架或 2) ADO.NET 或 3) 其他

The Admin computer need to install mysql database on his computer and then access the mysql database to another (10 or more) client systems which are under.network connected. Admin 计算机需要在他的计算机上安装 mysql 数据库,然后将 mysql 数据库访问到另一个(10 个或更多)网络连接的客户端系统。

Here, just one MySql database inside admin computer only.在这里,管理员计算机中只有一个 MySql 数据库。 And all other client machines are accessing MySql database by admin's computer IP address.所有其他客户端机器都通过管理员计算机 IP 地址访问 MySql 数据库。 The IP connection string is like this:- IP 连接字符串是这样的:-

 @"Data Source=10.0.0.101

One of other matter is, the customer demanding that, when installing.exe file on client machine, then should have to automatically install mysql server database (ie, xampp or other ect..) also.另一件事是,客户要求在客户机上安装 .exe 文件时,还必须自动安装 mysql 服务器数据库(即 xampp 或其他等)。

How can I do this?我怎样才能做到这一点?

I have tried, ADO.NET C# instead EF to connect mysql for wpf windows application.我已经尝试过,ADO.NET C# 而不是 EF 为 wpf windows 应用程序连接 mysql。 like that:-像那样:-

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);  
        }  
    }  

Is it a bad idea instead of use Entity Framework or another one?不使用 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());
        }
    }
}

I found these tutorials within official MySQL documentation:)我在官方 MySQL 文档中找到了这些教程:)

在此处输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM