2016-12-06 14 views
0

私に助言してください。私はMySQLのサーバーデータベースを使用してWPFでWindowsアプリケーションを開発しようとしています。C#.NETのMySqlデータベースにWPFでアクセスするにはどうすればよいですか?

私はMysqlデータベースで接続を確立するためにどのような方法を使用する必要がありますか?

1)Entity Frameworkの OR 2)ADO.NET OR 3)その他1

自分のコンピュータ上のMySQLデータベースをインストールし、別の(10以上のMySQLデータベースにアクセスするには、管理コンピュータの必要性)クライアントシステムに接続することができます。

ここでは、管理用コンピュータ内に1つの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); 
     } 
    } 

エンティティフレームワークまたは別のものを使用するのではなく、悪い考えですか?

+0

https://social.msdn.microsoft.com/Forums/windows/en-US/32bdcbcb-e9d2-40cd-8a5a-ec3530db2b32/create-an-installer- for-c-with-mysql?forum =同じ情報については、winformssetupを参照してください。 –

+0

EF *は* ADO.NETを使用します。 WPFはデータアクセスとは何の関係もありません。どちらも壊れていない。ランダムなものを試す代わりに、まずORMが必要かどうかを決めます。 PS。 MySQLとADO.NETに関する重複した質問が*たくさんあります –

+0

BTW *実際の質問は何ですか?つまり、このテキストは「.NETでデータベースにアクセスするにはどうすればよいですか」に要約できます。 –

答えて

-1
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をインストールすることができます
+0

こんにちは、私はあなたの言うとおりに従います。クライアントマシンに.exeファイルをインストールする際に、mysqlサーバデータベース(つまり、xamppなど)も自動的にインストールする必要があります。 どうすればいいですか? –

+0

@johnsonANDjohnsonあなたはあなたのクライアントマシンにmysqlサーバーをインストールすることを意味しますか?通常、サーバマシンにmysqlサーバをインストールし、サーバIPを 'connstr'に適用します。 – chengzi

+0

いいえ、私はサーバマシンにmysqlをインストールすることを意味します。しかし、顧客は、サーバーmechine用の.exe Windowsアプリケーションをインストールするときに、自動的にサーバーmechineにmysqlをインストールしたいと考えています(クライアントmechine用と、サーバーmechine用の2つのウィンドウアプリケーションがあります)。どうやってやるの?または、私はsqllite.s3dbを使用する代わりにmysqlを使用せずに考えています。それは良い方法ですか?私に連絡してください。 –

関連する問題