[英]How can I Store SQL Server Query Results into a List of String?
我想将从数据库查询返回的内容存储到字符串列表中。 我有这个代码:
List<String> slDistinctUncommonWords = new List<string>();
. . .
slDistinctUncommonWords = GetDistinctWordsFromDB();
. . .
private List<String> GetDistinctWordsFromDB()
{
List<String> slDistinctWords = new List<string>();
try
{
string sQuery = "SELECT DISTINCT UncommonWord " +
"FROM WORDSTATS " +
"ORDER BY UncommonWord";
SqlConnection sqlConnection = new SqlConnection(connection);
SqlCommand cmd = new SqlCommand(sQuery, sqlConnection);
sqlConnection.Open();
slDistinctWords = (List<String>)cmd.ExecuteScalar();
sqlConnection.Close();
return slDistinctWords;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return null;
}
}
“slDistinctUncommonWords = GetDistinctWordsFromDB();” 但是,行失败,“无法将类型为'System.String'的object类型转换为'System.Collections.Generic.List'1[System.String]' ”。
放入数据表
DataTable dt = new DataTable();
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(dt);
List<string> slDistinctWords = dt.AsEnumerable().Select(x => x.Field<string>(0)).Distinct().ToList();
您可以使用ExecuteReader而不是ExecuteScalar ,如以下代码:
using(SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
slDistinctWords.Add(reader["UncommonWord"].ToString());
}
}
我希望你觉得这有帮助。
可以将 SqlDataReader 视为 IDataRecord 对象的集合。 所以
var col = new List<String>();
using (var rdr = cmd.ExecuteReader())
{
col = rdr.Cast<IDataRecord>().Select(r => r.GetString(0)).ToList();
}
如果您使用的是 Microsoft SQL 服务器,请尝试将您的 SQL 查询语句替换为:
string sQuery = "SELECT DISTINCT CAST(UncommonWord AS VARCHAR(32)) + ',' " +
"FROM WORDSTATS " +
"ORDER BY UncommonWord FOR XML PATH('')";
这有效:
private List<String> GetDistinctWordsFromDB()
{
List<String> slDistinctWords = new List<string>();
try
{
string sQuery = "SELECT DISTINCT UncommonWord " +
"FROM WORDSTATS " +
"ORDER BY UncommonWord";
SqlConnection sqlConnection = new SqlConnection(connection);
SqlCommand cmd = new SqlCommand(sQuery, sqlConnection);
SqlDataReader reader;
sqlConnection.Open();
reader = cmd.ExecuteReader();
while (reader.Read())
{
slDistinctWords.Add(reader.GetString(0));
}
reader.Close();
sqlConnection.Close();
return slDistinctWords;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return null;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.