2016-08-01 8 views
0

C#アプリケーションでSELECTクエリを実行しようとしていますが、実際には実際にはスタックされています。 MySqlデータベースから何かを選択するには?C#SQLクエリを実行して応答を返します。

私の現在のコードは次のようになります。

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using MySql.Data.MySqlClient; 

namespace Helpful 
{ 
    class database_connector 
    { 
     private MySqlConnection connection; 
     private string server; 
     private string database; 
     private string uid; 
     private string password; 

     // Constructor 
     public database_connector() 
     { 
      Initialize(); 
     } 

     //Initialize values 
     private void Initialize() 
     { 
      server = "xxx"; 
      database = "xxx"; 
      uid = "xxx"; 
      password = "xxx"; 
      string connectionString; 
      connectionString = "SERVER=" + server + ";" + "DATABASE=" + 
      database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";"; 

      connection = new MySqlConnection(connectionString); 
     } 

     //open connection to database 
     private bool OpenConnection() 
     { 
      try 
      { 
       connection.Open(); 
       return true; 
      } 
      catch (MySqlException ex) 
      { 
       switch (ex.Number) 
       { 
        case 0: 
         MessageBox.Show("Cannot connect to server. Contact administrator."); 
         break; 
        case 1045: 
         MessageBox.Show("Invalid username/password, please try again"); 
         break; 
       } 
       return false; 
      } 
     } 

     //Close connection 
     private bool CloseConnection() 
     { 
      try 
      { 
       connection.Close(); 
       return true; 
      } 
      catch (MySqlException ex) 
      { 
       MessageBox.Show(ex.Message); 
       return false; 
      } 
     } 

     //Select statement 
     public void user_check(string username, string password) 
     { 
      string query = "SELECT * FROM swear_tool WHERE username =" + username; 

      if (this.OpenConnection() == true) 
      { 
       MySqlCommand cmd = new MySqlCommand(query, connection); 
       MySqlDataReader dataReader = cmd.ExecuteReader(); 
       dataReader.Close(); 
       this.CloseConnection(); 
      } 
     } 
    } 
} 

しかし、これは実際に働いていた場合、私は見ることができましたか?なぜなら、返されるメッセージボックスに結果を表示しようとすると、文字列に変換できないからです。

if (this.OpenConnection() == true) 
{ 
    MySqlCommand cmd = new MySqlCommand(query, connection); 
    MySqlDataReader dataReader = cmd.ExecuteReader(); 
    MessageBox.Show(dataReader); 
    dataReader.Close(); 
    this.CloseConnection(); 
} 
+0

うん、あなたはそのようにそれを行うことはできません。これにより、適切な方向に進むことができます。https://msdn.microsoft.com/en-us/library/haa3afyz(v=vs.110).aspx – sgeddes

答えて

1

データベースから必要なフィールドを知る必要があります。 SELECT Id, Name FROM swear_tool WHERE username =" + usernameのようなSQLを使用し、Nameフィールドを取得するコードを使用します。
インデックス0 = Idを
インデックス1 =名前< - のGetString(1)

if (dataReader.HasRows) { 
    while (dataReader.Read()) { 
     Console.WriteLine("{0}", dataReader.GetString(1)); 
    } 
} else { 
    Console.WriteLine("No rows."); 
} 
関連する問題