gpt4 book ai didi

C# sqlite 查询结果列表

转载 作者:IT王子 更新时间:2023-10-29 06:19:23 26 4
gpt4 key购买 nike

我在挣扎。我对返回单列数据的数据库进行了查询,我需要将其设置为列表。这是我正在使用的内容,我收到有关将 void 转换为字符串的错误。

public static void GetImportedFileList()
{
using (SQLiteConnection connect = new SQLiteConnection(@"Data Source=C:\Documents and Settings\js91162\Desktop\CMMData.db3"))
{
connect.Open();
using (SQLiteCommand fmd = connect.CreateCommand())
{
SQLiteCommand sqlComm = new SQLiteCommand(@"SELECT DISTINCT FileName FROM Import");
SQLiteDataReader r = sqlComm.ExecuteReader();
while (r.Read())
{
string FileNames = (string)r["FileName"];

List<string> ImportedFiles = new List<string>();
}

connect.Close();
}
}
}

然后再申请

List<string> ImportedFiles = GetImportedFileList() // Method that gets the list of files from the db 
foreach (string file in files.Where(fl => !ImportedFiles.Contains(fl)))

最佳答案

public static List<string> GetImportedFileList(){
List<string> ImportedFiles = new List<string>();
using (SQLiteConnection connect = new SQLiteConnection(@"Data Source=C:\Documents and Settings\js91162\Desktop\CMMData.db3")){
connect.Open();
using (SQLiteCommand fmd = connect.CreateCommand()){
fmd.CommandText = @"SELECT DISTINCT FileName FROM Import";
fmd.CommandType = CommandType.Text;
SQLiteDataReader r = fmd.ExecuteReader();
while (r.Read()){
ImportedFiles.Add(Convert.ToString(r["FileName"]));
}
}
}
return ImportedFiles;
}

我在您的代码中修改的内容:

  • ImportedFiles 放在整个方法的范围内。
  • 无需调用 connect.Close();,因为连接对象包含在 using block 中。
  • 使用 Convert.ToString 而不是 (String) 因为前者将处理所有数据类型到字符串的转换。我遇到了这个 Here

编辑:

您正在创建一个新的命令对象 sqlComm,而不是使用由连接对象创建的 fmd

关于C# sqlite 查询结果列表<string>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2910465/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com