Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从数据库读取后返回列表_C#_Sql Server - Fatal编程技术网

C# 从数据库读取后返回列表

C# 从数据库读取后返回列表,c#,sql-server,C#,Sql Server,我正在尝试从数据库中的Names表中检索所有名称。我无法检索数据并将其作为列表返回。我怎么做 public List<SelectListItem> getNames() { try { using (SqlCommand com = new SqlCommand("SELECT * FROM Names", con)) {

我正在尝试从数据库中的Names表中检索所有名称。我无法检索数据并将其作为列表返回。我怎么做

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()没关系。它可以是任何类型。这只是一个示例。或者你不能按照示例编写代码?