我在 Visual Studio Express 2012 中使用 C#。我专门使用桌面应用程序。作为数据库,我使用 MySQL
数据库和 MySQL 之间的连接工作正常。
我的疑问是关于进行搜索并返回结果。
在我见过的所有示例中,最常见的是在我的 MySQLenter code here
连接类中创建一个方法,该方法将返回一个包含搜索结果的列表。我真的不知道这在概念上是否更正确,但它似乎非常可以接受。
我设法进行搜索,从我的桌子上返回所有客户。但我的大问题是:如何制作这种通用方法?
例如
我的表单有一个触发点击事件的按钮:
dbConnect = new DBConnect();
dbConnect.OpenConnection();
private List<Clients> listSQLQuery;
listSQLQuery = dbConnect.Select("select * from clients");
datagridview.DataSource = listSQLQuery;
我上面使用的方法 dboConnect.Select() :
public List<Clients> Select(string query)
{
//Create a list to store the result
List<Clients> list = new List<Clients>();
Clients clients = new Clients();
//Open connection
if (this.OpenConnection() == true)
{
//Create Command
MySqlCommand cmd = new MySqlCommand(query, connection);
//Create a data reader and Execute the command
MySqlDataReader dataReader = cmd.ExecuteReader();
//Read the data and store them in the list
while (dataReader.Read())
{
clients.Id = dataReader["Id"].ToString();
clients.Name = dataReader["Name"].ToString();
list.Add(cliente);
}
//close Data Reader
dataReader.Close();
//close Connection
this.CloseConnection();
//return list to be displayed
return list;
}
else
{
return list;
}
}
最后,我的班级客户
public class Clients
{
public string Id { get; set; }
public string Name { get; set; }
}
这一切都有效,但非常特定于与客户端的查询。
如果现在我打电话listSQLQuery=dbConnect.Select("select * from products")这个方法将不起作用,因为它是使用作为返回客户端列表而不是产品列表构建的。
我不知道我的问题是否清楚,但我希望我可以打电话而不用担心它是客户、产品还是房间。
像这样的东西:
listSQLQuery.dbConnect.Select("select * from clients");
listSQLQuery.dbConnect.Select("select * from products");
listSQLQuery.dbConnect.Select("select * from rooms");
有没有什么方法可以得到一个通用的列表返回,而不用担心 listQuerySQL 的类型?我只想将此列表绑定到数据网格视图。
我是 C# 的新手,所以我对 LINQ、实体框架一无所知...