寻找为Sql查询和Windows窗体创建帮助程序类的指导

时间:2013-09-10 05:01:11

标签: c# mysql sql

我会尝试尽可能简单。

我有一个带有 SELECT,INSERT,DELETE和UPDATE CRUD )按钮的工作GUI,我需要使用帮助程序类而不只是运行代码按钮后面等等。

但我没有想到甚至如何开始编码。如果我在另一个班级工作,我不明白如何为按钮或标签编写动作。

我尝试过“ClassNameHere:Form1”,但收到错误:

  由于其保护等级,lblInfo无法使用   cmbTable由于其保护级别而无法访问

我用Google搜索并尝试将课程更改为public而不是公开,但无济于事。

所以我必须得到这段代码(这只是SELECT查询)

private void fillcomboBox()
{
    try
    {
        conn = new MySqlConnection(connstring);
        conn.Open();
        MySqlCommand myCommand = new MySqlCommand("SELECT * FROM person", conn);
        MySqlDataReader myReader;
        myReader = myCommand.ExecuteReader();
        cmbTable.Items.Clear();
        while (myReader.Read())
        {
            cmbTable.Items.Add(myReader["personID"] + " | " + myReader["firstName"] + " | " + myReader["lastName"] + " | " + myReader["address"] + " | " + myReader["phoneNumber"] + " | " + myReader["postCode"] + " | " + myReader["dateOfBirth"]);
        }
    }

    catch (Exception err)
    {//handle the error with a message
        lblInfo.Text = " Error reading the database.";
        lblInfo.Text += err.Message; ;
    }

    finally
    {

    }
}

要在另一个类(助手类)中工作并链接到表单以便它可以工作但不在按钮后面...我希望这是有道理的。 但就像我说的那样,我不知道如何开始编码。

我会喜欢任何输入,任何事情。

谢谢。

2 个答案:

答案 0 :(得分:0)

使方法返回数据库查询中的字符串列表,并将此方法放在antoher类中(例如,称为SQLHelper)。您可以在此处放置所有与SQL相关的方法。使返回类型与SQL特定类无关。就像一个字符串列表,特定的人物对象,无论如何。使此SQL帮助程序类成为Form类的成员,并在需要时调用它的方法。使用它的返回值来完成你必须做的事情。

public class SQLHelper
{

    public IList<Person> GetPersons()
    {
    try
        {
            var result = new List<Person>();
            conn = new MySqlConnection(connstring);
            conn.Open();
            MySqlCommand myCommand = new MySqlCommand("SELECT * FROM person", conn);
            MySqlDataReader myReader;
            myReader = myCommand.ExecuteReader();
            while (myReader.Read())
            {
                result.add(new Person(){ID = myReader["personID"], ...});
            }
            return result;
        }
        catch
        {
            return null;
        }
    }   

}

public class Person
{
    public string ID {get;set;}
    public string FirstName {get;set;}
    public string LastName {get;set;}
    public string Address {get;set;}
    public string PhoneNumber {get;set;}
    public string PostCode {get;set;}
    public string DateOfBirth {get;set;}

    public override string ToString()
    {
        return ID + " | " + FirstName + " | " + "...";
    }
}

private void fillcomboBox()
{
    cmbTable.Items.Clear();
    var sqlHelper = new SQLHelper();
    var persons = sqlHelper.GetPersons();
    if(persons == null)
    {
        lblInfo.Text = " Error reading the database.";
        return;
    }
    foreach(var person in persons)
    {
        cmbTable.Items.Add(person.ToString());
    }
}

答案 1 :(得分:0)

将您的数据库访问代码与UI相关代码分开。在您的帮助器方法中,您可以编写方法来检索Data要绑定控件的内容。

在您的UI代码页面后面,您可以在帮助程序类中调用该方法并将这些数据绑定到控件,如果有任何错误,您可以在标签中显示该方法。