C# 返回实体类的列表
这是我的班级:C# 返回实体类的列表,c#,list,ilist,C#,List,Ilist,这是我的班级: public class Customer { public int ID { get; set; } public string Card_ID { get; set; } public double Cash { get; set; } public string Name { get; set; } public Image Photo { get; set; } } 我需要在我的数据库上
public class Customer
{
public int ID { get; set; }
public string Card_ID { get; set; }
public double Cash { get; set; }
public string Name { get; set; }
public Image Photo { get; set; }
}
我需要在我的数据库上进行选择,以获取客户的一些信息,我以前使用DataSet,但在性能方面,我发现它不是最佳选择。此外,我只需要读取2或3个字段,我启动了此方法:
public List<Customer> ConsultCustomerData(string cardID)
{
list<Customer> customer = null;
string sql = "SELECT name, cash FROM customers WHERE card_id = @cardID";
try
{
MySqlCommand cmd = new MySqlCommand();
cmd.CommandText = sql;
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add(new MySqlParameter("@cardID", MySqlDbType.VarChar)).Value = cardID;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
现在我不知道如何继续。。。
如何使用List或IList返回这些信息?您可以使用查询创建一个detraeder。在初始化您的列表之后。该做什么
whiledatareader.read并在循环中创建一个客户对象,给出读者的值,最后将其添加到列表中 您可以使用查询创建detraeder。在初始化您的列表之后。该做什么
whiledatareader.read并在循环中创建一个客户对象,给出读者的值,最后将其添加到列表中 您可以使用command.ExecuteReader方法并使用reader填充实体数据
public List<Customer> ConsultCustomerData(string cardID)
{
List<Customer> list = new List<Customer>();
string sql = "SELECT name, cash FROM customers WHERE card_id = @cardID";
MySqlCommand cmd = new MySqlCommand();
cmd.CommandText = sql;
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add(new MySqlParameter("@cardID", MySqlDbType.VarChar)).Value = cardID;
using (IDbDataReader reader = cmd.ExecuteReader()) {
while (reader.Read()) {
list.Add(new Customer {
Name = reader.GetString(0),
Cash = reader.GetDouble(1)
});
}
}
return list;
}
检查:
ADO.NET接口及其应用
ADO.NET接口及其应用
您可以使用command.ExecuteReader方法并使用reader填充实体数据
public List<Customer> ConsultCustomerData(string cardID)
{
List<Customer> list = new List<Customer>();
string sql = "SELECT name, cash FROM customers WHERE card_id = @cardID";
MySqlCommand cmd = new MySqlCommand();
cmd.CommandText = sql;
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add(new MySqlParameter("@cardID", MySqlDbType.VarChar)).Value = cardID;
using (IDbDataReader reader = cmd.ExecuteReader()) {
while (reader.Read()) {
list.Add(new Customer {
Name = reader.GetString(0),
Cash = reader.GetDouble(1)
});
}
}
return list;
}
检查:
ADO.NET接口及其应用
ADO.NET接口及其应用
您可以使用cmd.ExecuteReader或使用类似ORM的好方法来完成
您可以使用cmd.ExecuteReader或使用类似ORM的好方法来完成
我肯定会推动转换到使用类似ORM的实体框架,甚至是Linq到SQL——然而,要回答您的问题,您需要从查询中读取信息,即
using (var reader = cmd.ExecuteReader())
{
List<Customer> customers = new List<Customer>();
while(reader.Read())
{
customers.Add(new Customer
{
Name = reader.GetString(0),
Cash = reader.GetDouble(1)
});
}
return customers;
}
我肯定会推动转换到使用类似ORM的实体框架,甚至是Linq到SQL——然而,要回答您的问题,您需要从查询中读取信息,即
using (var reader = cmd.ExecuteReader())
{
List<Customer> customers = new List<Customer>();
while(reader.Read())
{
customers.Add(new Customer
{
Name = reader.GetString(0),
Cash = reader.GetDouble(1)
});
}
return customers;
}
使用SQL Data Reader读取数据,并将关联数据设置为实体,然后构建如下所示的列表
list <Customer> lstCustomer =new list <Customer>();
while (reader.Read())
{
Customer cus=new Customer();
cus.Card_ID =......
.............
................
lstCustomer.Add(cus);
}
使用SQL Data Reader读取数据,并将关联数据设置为实体,然后构建如下所示的列表
list <Customer> lstCustomer =new list <Customer>();
while (reader.Read())
{
Customer cus=new Customer();
cus.Card_ID =......
.............
................
lstCustomer.Add(cus);
}
将Model.edmx添加到项目中。然后你就可以很容易地理解剩下的。它为您创建模型。您不必担心创建类。如果您有表关系,也很有帮助。您不必编写SQL代码来写入或读取数据库
以下是如何使用EF。将Model.edmx添加到项目中。然后你就可以很容易地理解剩下的。它为您创建模型。您不必担心创建类。如果您有表关系,也很有帮助。您不必编写SQL代码来写入或读取数据库
以下是如何使用EF。您可以使用实体框架或任何类型的ORM。我想可能会使用DataReader,然后在其中循环,然后将其值分配到customer.Field中。但是我不能让它=\对于cmd的每个结果,您必须将数据解析回Customer对象。或者使用一个类似于ORM的实体框架,它可以为您实现这一点。您可以使用实体框架或任何类型的ORM。我认为可以使用一个DataReader,然后在其中循环,然后将其值分配到customer.Field。但是我不能让它=\对于cmd的每个结果,您必须将数据解析回Customer对象。或者使用一个类似于ORM的实体框架,这就为你做了。有人说我可以很容易地得到SQL注入,你能帮我吗?你已经通过使用参数从SQL注入中拯救了自己。这就是我所认为的。。。谢谢,如果我不使用类似于=list.Name=reader[Name].ToString的东西。读卡器现在如何将值传递到list.Name?从select语句中给列序号。这是基于零的有人说我可以很容易地得到一个SQL注入,你能救我吗?你已经通过使用参数从SQL注入中拯救了自己。这就是我所认为的。。。谢谢,如果我不使用类似于=list.Name=reader[Name].ToString的东西。读卡器现在如何将值传递到list.Name?从select语句中给列序号。它是零基数的我从来没有使用过实体框架有这么难吗?我现在就来读。@Ghaleon不是真的,这些年来它被简化了——你可能应该看看这个方法。我从来没有用过实体框架。它有这么难吗?我现在就来读。@Ghaleon其实不是,这些年来它被简化了——你应该看看这个方法。我从来没有使用过ORM。你能写一篇关于它的好文章吗?我会读一些关于它的文章Google和StackOverflow有一些关于ORM的很好的文章,我从来没有用过ORM。你能写一篇关于它的好文章吗?我会读关于它的谷歌和StackOverflow有一些关于ORM的不错的文章。我正在看你链接的视频。这个实体框架和类型化数据集有什么区别?@Ghaleon你可以从这里找到答案:我正在看你链接的视频。这个实体框架和类型化数据集有什么区别?@Ghaleon您可以从这里找到答案: