簡體   English   中英

如何使用 WPF 在 C#.NET 中訪問 MySql 數據庫?

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

請給我提意見。 我正在嘗試使用 Mysql 服務器數據庫在 WPF 中開發 Windows 應用程序。

我必須使用哪種方法在 Mysql 數據庫上創建連接?

1) 實體框架或 2) ADO.NET 或 3) 其他

Admin 計算機需要在他的計算機上安裝 mysql 數據庫,然后將 mysql 數據庫訪問到另一個(10 個或更多)網絡連接的客戶端系統。

在這里,管理員計算機中只有一個 MySql 數據庫。 所有其他客戶端機器都通過管理員計算機 IP 地址訪問 MySql 數據庫。 IP 連接字符串是這樣的:-

 @"Data Source=10.0.0.101

另一件事是,客戶要求在客戶機上安裝 .exe 文件時,還必須自動安裝 mysql 服務器數據庫(即 xampp 或其他等)。

我怎樣才能做到這一點?

我已經嘗試過,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());
        }
    }
}

我在官方 MySQL 文檔中找到了這些教程:)

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM