C# 正在寻找有关为Sql查询和Windows窗体创建帮助器类的指导信息

C# 正在寻找有关为Sql查询和Windows窗体创建帮助器类的指导信息,c#,mysql,sql,C#,Mysql,Sql,我会尽量使这件事尽可能简单 我有一个带有选择、插入、删除和更新(CRUD)按钮的工作GUI,我需要使用助手类,而不仅仅是在按钮后面运行代码 但我不知道如何开始编写这个。如果我在另一个类中工作,我不明白如何为按钮或标签编写操作代码 我尝试过执行“ClassNameHere:Form1”,但出现了一个错误: lblInfo由于其保护级别而不可访问 CMB表由于其保护级别而不可访问 我在谷歌上搜索了一下,并尝试将类改为公共类,而不是公共类,但都没有用 所以我必须得到这个代码(这只是SELECT查询)

我会尽量使这件事尽可能简单

我有一个带有选择、插入、删除和更新(CRUD)按钮的工作GUI,我需要使用助手类,而不仅仅是在按钮后面运行代码

但我不知道如何开始编写这个。如果我在另一个类中工作,我不明白如何为按钮或标签编写操作代码

我尝试过执行“ClassNameHere:Form1”,但出现了一个错误:

lblInfo由于其保护级别而不可访问
CMB表由于其保护级别而不可访问

我在谷歌上搜索了一下,并尝试将类改为公共类,而不是公共类,但都没有用

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

在不同的类(helper类)中工作,并链接到表单,使其工作,但不在按钮后面…我希望这是有意义的。 但就像我说的,我甚至不知道如何开始编写这个

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


谢谢。

使一个方法从数据库查询中返回字符串列表,并将此方法放入另一个类(例如称为SQLHelper)。您可以将所有与SQL相关的方法放在这里。使返回类型独立于SQL特定类。就像字符串列表一样,特定的person对象,等等。使此SQL帮助器类成为表单类的成员,并在需要时调用其方法。使用它的返回值来完成您必须完成的工作

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());
    }
}
公共类SQLHelper
{
公共IList GetPersons()
{
尝试
{
var result=新列表();
conn=新的MySqlConnection(connstring);
conn.Open();
MySqlCommand myCommand=新的MySqlCommand(“选择*来自个人”,康涅狄格州);
MySqlDataReader;
myReader=myCommand.ExecuteReader();
while(myReader.Read())
{
add(newperson(){ID=myReader[“personID”],…});
}
返回结果;
}
接住
{
返回null;
}
}   
}
公共阶层人士
{
公共字符串ID{get;set;}
公共字符串名{get;set;}
公共字符串LastName{get;set;}
公共字符串地址{get;set;}
公共字符串PhoneNumber{get;set;}
公共字符串邮政编码{get;set;}
公共字符串DateOfBirth{get;set;}
公共重写字符串ToString()
{
返回ID+“|”+FirstName+“|”+“…”;
}
}
私有void fillcomboBox()
{
cmbTable.Items.Clear();
var sqlHelper=新的sqlHelper();
var persons=sqlHelper.GetPersons();
if(persons==null)
{
lblInfo.Text=“读取数据库时出错。”;
回来
}
foreach(var个人对个人)
{
cmbTable.Items.Add(person.ToString());
}
}

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


在UI代码隐藏页面中,您可以在helper类中调用该方法,并将这些数据绑定到控件,若有任何错误,您可以在标签中显示该方法

让我确保我正确理解这一点。我将上面的代码放在一个新类中,并从Form1.cs调用它,我需要在哪里?例如,我会从form1中调用上面的组合框?还是错了?创建两个新文件:Person.cs放入Person类,SQLHelper.cs放入SQLHelper类。fillcomboBox方法在你的Form1.cs中也使用过。嗯,让我试试,我会给你回复的。我不认为这就是我要找的,我不知道我也很难找到如何做到这一点。很抱歉,我甚至不知道那是什么,我只是在寻找一种方法来建立一个选择的类,插入、删除和更新而不在按钮后面。它需要在另一个类中,并在需要时从按钮后面调用。
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());
    }
}