0

私はMySQLデータベースが初めてで、Visual Studio C#を使用してデータベースに接続しています。次の選択方法があります。動作しているかどうかを確認するために実行するにはどうすればよいですか?

編集済み open および close 接続方法

//Open connection to database
    private bool OpenConnection()
    {
        try
        {
           // connection.open();
            return true;
        }
        catch (MySqlException ex)
        {
            //When handling errors, your application's response based 
            //on the error number.
            //The two most common error numbers when connecting are as follows:
            //0: Cannot connect to server.
            //1045: Invalid user name and/or password.
            switch (ex.Number)
            {
                case 0:
                   MessageBox.Show("Cannot connect to server.");
                    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;
        }
    }

上記のように、クローズおよびオープン接続と同じクラスにあるメソッドを選択します

 public List<string>[] Select()
    {
        string query = "SELECT * FROM Questions";

        //Create a list to store the result
        List<string>[] list = new List<string>[3];
        list[0] = new List<string>();
        list[1] = new List<string>();
        list[2] = new List<string>();
        list[3] = new List<string>();
        list[4] = new List<string>();
        list[5] = new List<string>();
        list[6] = new List<string>();
        list[7] = new List<string>();

        //Open connection
        if (this.OpenConnection() == true)
        {
            //Create Command
            MySqlCommand cmd = new MySqlCommand(query, connection);
            //Create a data reader and Execute the command
            MySqlDataReader dataReader = cmd.ExecuteReader();

            //Read the data and store them in the list
            while (dataReader.Read())
            {
                list[0].Add(dataReader["id"] + "");
                list[1].Add(dataReader["difficulty"] + "");
                list[2].Add(dataReader["qustions"] + "");
                list[3].Add(dataReader["c_answer"] + "");
                list[4].Add(dataReader["choiceA"] + "");
                list[5].Add(dataReader["choiceB"] + "");
                list[6].Add(dataReader["choiceC"] + "");
                list[7].Add(dataReader["choiceD"] + "");
            }

            //close Data Reader
            dataReader.Close();

            //close Connection
            this.CloseConnection();

            //return list to be displayed
            return list;
        }
        else
        {
            return list;
        }
    }

このメソッドは、すべてのデータベース接続設定を取得した別のクラスにあります。メイン クラスからこのメソッドを呼び出してテストし、機能しているかどうかを確認したいのですが、どうすればよいでしょうか?

4

2 に答える 2

1

その DB クラスのオブジェクト インスタンスを作成してから、Select() メソッドを呼び出す必要があります。
したがって、この DB クラスに名前が付けられているとするとQuestionsDB、次のように記述する必要があります。

QuestionDB questionDAL = new QuestionDB();
List<string>[] questions = questionDAL.Select();

ただし、その前に、この行を修正してください

List<string>[] list = new List<string>[8];  // you need 8 lists for your db query

配列リストの最初のリストにゼロ以上の要素があるかどうかをテストするレコードがあるかどうかを確認できます。

if(questions[0].Count > 0)
  ... // you have read records.

ただし、質問に特定のクラスを追加し、リストの配列の代わりにリスト(質問の)を使用するようにコードを変更します。たとえば、次のようなクラスを作成します

public class Question
{
    public string ID;
    public string Difficulty;
    public string Question;
    public string RightAnswer;
    public string AnswerA;
    public string AnswerB;
    public string AnswerC;
    public string AnswerD;
}

選択を変更して、リスト(質問の)を返します

 List<Question> list = new List<Question>;
 ......
 while (dataReader.Read())
 {
      Question qst = new Question();
      qst.ID = dataReader["id"] + "";
      qst.Difficulty = dataReader["difficulty"] + "";
      qst.Question = dataReader["qustions"] + "";
      qst.RightAnswer = dataReader["c_answer"] + "";
      qst.AnswerA = dataReader["choiceA"] + "";
      qst.AnswerB = dataReader["choiceB"] + "";
      qst.AnswerC = dataReader["choiceC"] + "";
      qst.AnswerD = dataReader["choiceD"] + "";
      list.Add(qst);
 }
 return list;
于 2012-11-26T23:41:43.230 に答える
0

メソッドの単体テストを作成することで、メソッドが機能するかどうかをテストできます。優れたユニットテストフレームワークはNunitです。これを呼び出す前に、DBへの接続を作成して開く必要があります。

    //Open connection
    if (this.OpenConnection() == true)
    {

他の人が言ったように、あなたはリストを修正したいと思うでしょう。

于 2012-11-26T23:47:09.267 に答える