c#数据库将单词读入列表

c#数据库将单词读入列表,c#,database,list,C#,Database,List,我正试图将数据库中的单词写入列表。我说的是 lst.Add(reader.GetString(0)) 如果我说的没错,用这段代码你可以把第一列的单词读到列表中。现在我总是遇到下一个错误 System.Data.dll中发生类型为“System.Data.SqlTypes.SqlNullValueException”的未处理异常 我不明白为什么我会出错。有什么建议吗 using (SqlConnection connection = new SqlConnection(@"Data Source

我正试图将数据库中的单词写入列表。我说的是 lst.Add(reader.GetString(0))

如果我说的没错,用这段代码你可以把第一列的单词读到列表中。现在我总是遇到下一个错误

System.Data.dll中发生类型为“System.Data.SqlTypes.SqlNullValueException”的未处理异常

我不明白为什么我会出错。有什么建议吗

using (SqlConnection connection = new SqlConnection(@"Data Source = (LocalDB)\MSSQLLocalDB; AttachDbFilename = D:\VisualStudio\Projects\runSheet\frontPage_V1.1\Jarvis\Jarvis\Jarvis\jarvisBrain.mdf; Integrated Security = True"))
{
    connection.Open();
    using (SqlCommand command = new SqlCommand("SELECT Word FROM ImportedWordList", connection))
    using (SqlDataReader reader = command.ExecuteReader())
    {  
        while (reader.Read())
        {

            lst.Add(reader.GetString(0));
        }
    }
    richTextBox1.Lines = lst.ToArray();
    connection.Close();
}

出现该错误是因为表ImportedWordList中的一条或多条记录在Word列中包含NULL

为了避免这种情况,您可以将查询更改为

using (SqlCommand command = new SqlCommand(@"
           SELECT Word 
           FROM ImportedWordList 
           WHERE Word IS NOT NULL", connection))
或者,您可以在读取过程中测试null:

 if(!reader.IsDBNull(0)
    lst.Add(reader.GetString(0));
无论如何,最好避免加载第一个示例中所示的空记录


但这是因为ImportedWordList表中的一条或多条记录在Word列中包含空值,所以您会得到该错误

为了避免这种情况,您可以将查询更改为

using (SqlCommand command = new SqlCommand(@"
           SELECT Word 
           FROM ImportedWordList 
           WHERE Word IS NOT NULL", connection))
或者,您可以在读取过程中测试null:

 if(!reader.IsDBNull(0)
    lst.Add(reader.GetString(0));
无论如何,最好避免加载第一个示例中所示的空记录


但是现在是学习如何使用VS调试器的好时机……是的,我知道,我自己在学习,为那些看起来愚蠢的问题感到抱歉。学习如何使用VS调试器的好时机……是的,我知道,我自己在学习,为那些看起来愚蠢的问题感到抱歉。