我会尽量让它变得简单。
我有一个带有选择、插入、删除和更新 (CRUD) 按钮的工作 GUI,我需要使用一个帮助程序类,而不仅仅是让代码在按钮后面运行等。
但我不知道如何开始编码。我不明白如果我在另一个类中工作,我如何为按钮或标签编写操作。
我尝试做"类名这里: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
{
}
}
在不同的类(帮助程序类)中工作并链接到窗体,以便它可以工作但不在按钮后面......我希望这是有道理的。但就像我说的,我什至不知道如何开始编码。
我喜欢任何输入,任何东西。
谢谢。
使方法从数据库查询返回字符串列表,并将此方法放在 antoher 类中(例如称为 SQLHelper)。你可以把所有与SQL相关的方法放在这里。使返回类型独立于 SQL 特定类。就像字符串列表,特定的人对象,任何。使此 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());
}
}
将数据库访问代码与 UI 相关代码分开。 在帮助程序方法中,可以编写方法来检索要绑定控件的数据。
在 UI 代码隐藏页面中,可以在帮助程序类中调用该方法并将这些数据绑定到控件,如果有任何错误,可以在 label 中显示。