C# 从数据库读取后返回列表
我正在尝试从数据库中的Names表中检索所有名称。我无法检索数据并将其作为列表返回。我怎么做C# 从数据库读取后返回列表,c#,sql-server,C#,Sql Server,我正在尝试从数据库中的Names表中检索所有名称。我无法检索数据并将其作为列表返回。我怎么做 public List<SelectListItem> getNames() { try { using (SqlCommand com = new SqlCommand("SELECT * FROM Names", con)) {
public List<SelectListItem> getNames()
{
try
{
using (SqlCommand com = new SqlCommand("SELECT * FROM Names", con))
{
con();
SqlDataReader dr = com.ExecuteReader();
return ?? // How to return the items that was returned
}
}
.......
public List getNames()
{
尝试
{
使用(SqlCommand com=newsqlcommand(“从名称中选择*,con))
{
con();
SqlDataReader dr=com.ExecuteReader();
返回//如何返回已返回的项目
}
}
.......
参见我的代码示例:
public static List<ActionItem> GetAllActions()
{
var actionItems = new List<ActionItem>();
SqlDataReader actionsReader = CatalogDB.GetAllActions();
try
{
while (actionsReader.Read())
{
actionItems.Add(new ActionItem
{
Id = (int)actionsReader["Id"],
Name = actionsReader["Name"] != DBNull.Value ? (string)actionsReader["Name"] : null,
Description = (string)actionsReader["Description"],
CreationDate = (DateTime)actionsReader["CreationDate"]
}
);
}
}
finally
{
actionsReader.Close();
}
return actionItems;
}
公共静态列表GetAllActions()
{
var actionItems=新列表();
SqlDataReader actionsReader=CatalogDB.GetAllActions();
尝试
{
while(actionsReader.Read())
{
添加(新的ActionItem)
{
Id=(int)actionsReader[“Id”],
Name=actionsReader[“Name”!=DBNull.Value?(字符串)actionsReader[“Name”]:null,
Description=(字符串)actionsReader[“Description”],
CreationDate=(日期时间)操作阅读器[“CreationDate”]
}
);
}
}
最后
{
actionsReader.Close();
}
退货项目;
}
您可以迭代返回的所有行,如下所示:
var items = new List<SelectListItem>();
while (dr.Read())
{
var valueInColumn1 = dr[1];
var valueInNamedColumn = dr["ColumnName"];
...
items.Add(new SelectListItem { Text = valueInColumn1.ToString(), Value = valueInNamedColumn.ToString());
}
return items;
var items=newlist();
while(dr.Read())
{
var valueInColumn1=dr[1];
var valueInNamedColumn=dr[“ColumnName”];
...
添加(新SelectListItem{Text=valueInColumn1.ToString(),Value=valueInNamedColumn.ToString());
}
退货项目;
有两种不同的方法,但这可能是最直接的方法
public List<SelectListItem> getNames()
{
var list = new List<SelectedListItem>();
try
{
using (SqlCommand com = new SqlCommand("SELECT * FROM Names", con))
{
con();
SqlDataReader dr = com.ExecuteReader();
while (dr.Read())
{
var item = new SelectedListItem();
item.Value = dr[0];
list.Add(item);
}
}
}
catch(Exception ex)
{
// ...
}
return list;
}
public List getNames()
{
var list=新列表();
尝试
{
使用(SqlCommand com=newsqlcommand(“从名称中选择*,con))
{
con();
SqlDataReader dr=com.ExecuteReader();
while(dr.Read())
{
var item=新选择的ListItem();
项目价值=dr[0];
列表。添加(项目);
}
}
}
捕获(例外情况除外)
{
// ...
}
退货清单;
}
首先实例化列表以保存项目(也可以将其保留为null,但这取决于调用者的期望),然后通过调用Read()遍历,直到它返回false,这意味着没有更多记录可用
当datareader有记录时,您可以通过调用GetString、GetInt、GetLong等方法之一来获取列,并将要获取的列作为参数提供给它
构造要存储在列表中的类型,并将检索到的值添加到其属性中,然后将新类型添加到列表中
public List<SelectListItem> getNames()
{
var list = new List<SelectListItem>();
try
{
using (SqlCommand com = new SqlCommand("SELECT * FROM Names", con))
{
con();
SqlDataReader dr = com.ExecuteReader();
while (dr.Read())
{
list.Add(new SelectListItem {
Value = dr.GetString(0), // first column, depends on your table
Text = dr.GetString(1) // second column, depends on your table
});
}
catch(Exception e)
{
Trace.WriteLine(r.Message);
}
return list;
}
public List getNames()
{
var list=新列表();
尝试
{
使用(SqlCommand com=newsqlcommand(“从名称中选择*,con))
{
con();
SqlDataReader dr=com.ExecuteReader();
while(dr.Read())
{
添加(新建SelectListItem{
Value=dr.GetString(0),//第一列取决于您的表
Text=dr.GetString(1)//第二列,取决于您的表
});
}
捕获(例外e)
{
Trace.WriteLine(r.Message);
}
退货清单;
}
可能重复它说SqlDataReader不包含ReadStringI的定义我没有一个编译器备用并查找了错误的msdn文档。抱歉..修复了它…如果我使用GetInt
那么我必须用其他东西替换Value
?Value是string类型的,所以你可以执行dr.GetInt(0)。ToString()没关系。它可以是任何类型。这只是一个示例。或者你不能按照示例编写代码?