【发布时间】:2017-06-05 17:27:10
【问题描述】:
我想将 SQL 查询的结果转换为 C# 列表。我尝试使用以下不起作用的代码 - Visual Studio 返回
System.Data.dll 中出现“System.InvalidCastException”类型的未处理异常
代码:
public List<string> carList(int id)
{
List<string> list = new List<string>();
SqlConnection conn = new SqlConnection(connStr);
conn.Open();
string query = "SELECT ID FROM Cars WHERE custID = " + id;
SqlCommand cmd = new SqlCommand(query, conn);
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
list.Add(reader.GetString(0));
}
}
conn.Close();
return list;
}
SQL 查询的结果应该只是具有一个或多个 ID(整数)的单列。然后我想把这些都放到一个列表中。希望这能让您对我正在尝试做的事情有所了解。
如果有人能指出我在这里做错了什么,我将非常感激。
【问题讨论】:
-
“不起作用” - 怎么样?你有错误吗?列表是空的?还有什么?
-
您应该将值作为整数而不是 GetString(0) 获取,然后对该值调用 .ToString() 以将其添加到列表中。
-
Cars.ID 的数据类型是什么?我敢打赌这不是
string。试试reader.GetInt32(0).ToString() -
SQL Injection alert - 您应该不将您的 SQL 语句连接在一起 - 使用 参数化查询 来避免 SQL 注入
-
@marc_s 好的,我没有意识到这会带来安全风险,感谢您指出。
标签: c# sql-server list