我会尝试尽可能简单。
我有一个带有 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
{
}
}
要在另一个类(助手类)中工作并链接到表单以便它可以工作但不在按钮后面...我希望这是有道理的。 但就像我说的那样,我不知道如何开始编码。
我会喜欢任何输入,任何事情。
谢谢。
答案 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代码页面后面,您可以在帮助程序类中调用该方法并将这些数据绑定到控件,如果有任何错误,您可以在标签中显示该方法。