Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.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-试图将数据库中的每个值添加到列表中,但它只是添加最终值?_C# - Fatal编程技术网

C# C-试图将数据库中的每个值添加到列表中,但它只是添加最终值?

C# C-试图将数据库中的每个值添加到列表中,但它只是添加最终值?,c#,C#,这是我的密码: private List<string> readFromDatabase() { SQLiteConnection m_dbConnection = new SQLiteConnection("Data Source=" + fileName + ".sqlite;Version=3;"); string sql = "SELECT * FROM formsData"; m_dbConnect

这是我的密码:

        private List<string> readFromDatabase()
    {
        SQLiteConnection m_dbConnection = new SQLiteConnection("Data Source=" + fileName + ".sqlite;Version=3;");
        string sql = "SELECT * FROM formsData";

        m_dbConnection.Open();

        SQLiteDataReader dr = DatabaseHandler.ExecuteCommandReader(sql, m_dbConnection);

        List<string> tempList = new List<string>();

        if(dr.HasRows)
        {
            while (dr.Read())
            {
                tempList.Add(Convert.ToString(dr["fieldName"]));
                tempList.Add(Convert.ToString(dr["dataType"]));
                tempList.Add(Convert.ToString(dr["numberOfCharacters"]));
            }
        }
        return tempList;
    }
我试图让它将数据库中的每个值添加到列表中,但是它只添加最后一列中找到的最后一个值。有人知道如何解决这个问题吗?谢谢你

您可以使用DataTable而不是DataReader,尽管使用DataReader可以获得相同的结果。 请检查以下讨论: 在连接数据库时使用Try-Catchsteatments也是一种更好的做法

下面是一个基于代码的示例,说明如何使用DataTable实现该任务:


在开始迭代之前,确保记录集位于第一行

另外,您真的想获取表中的所有行,并将它们作为列表中的顺序值吗?也许将它们添加到类中会更有意义

    public class Record{
      public string Name { get; set; }
      public string Type { get; set; }
      public int Size { get; set; }
    }

当你说最后一列时,你是指最底部的记录吗?如果你把断点放进你的循环中,你会看到它将所有三项都添加到tempList中吗?你看到它在你输入的每一行都通过这个循环吗?另外,您使用什么来测试您的列表?是否真的是您使用列表的代码被破坏了?我看不出这段代码为什么不能添加三个元素的倍数,所以它只有一个值的想法似乎是错误的。当您使用Sql Mgmt Studio执行精确的查询时,是否会得到多个记录?这并不能解决问题,但您应该提供一个自定义类型来存储多个属性/列。例如,具有属性FieldName、DataType和NumberOfCharacters的类FormsData。然后在循环中填写一个列表。否则,您的列表只存储字符串,数据库中的一条记录在列表中被拆分为三个独立的字符串。@克里斯干杯,兄弟,我犯了一个愚蠢的错误。。。
    public class Record{
      public string Name { get; set; }
      public string Type { get; set; }
      public int Size { get; set; }
    }