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