1

我会尽量让这件事变得简单。

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

但我不知道如何开始编码。如果我在另一个班级工作,我不明白如何为按钮或标签编写动作。

我试过做“ClassNameHere:Form1”,但出现错误:

lblInfo 由于其保护级别
而无法访问 cmbTable 由于其保护级别而无法访问

我已经用谷歌搜索并尝试将课程更改为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
    {

    }
}

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

我会喜欢任何输入,任何东西。

谢谢你。

4

2 回答 2

0

让一个方法从您的数据库查询中返回一个字符串列表,并将这个方法放在另一个类中(例如,称为 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());
    }
}
于 2013-09-10T05:11:57.623 回答
0

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

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

于 2013-09-10T05:17:46.433 回答