我已经'偷了'Dummy01在下面的问题中的另一个答案中的一些代码: How can I populate a list with values from a SQL Server database?
问题是我想得到一个对象列表而不是字符串
我如何修改此代码才能这样做?非常感谢。
问题出现在代码的这一部分,我不知道要指定什么类型。
if (!reader.IsDBNull(0))
tagsList.Add(reader.GetString(0));
代码:
private void LoadList()
{
List<string> tagsList = new List<string>();
using (IDbConnection connection = new SqlConnection(Properties.Settings.Default.DBConnectionString))
{
connection.Open();
using (IDbCommand command = connection.CreateCommand())
{
command.CommandText = "SELECT TAGCOLUMN FROM TAGSTABLE";
using (IDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
if (!reader.IsDBNull(0))
tagsList.Add(reader.GetString(0));
}
reader.Close();
}
}
connection.Close();
}
}
答案 0 :(得分:4)
因此,如果您想获得我想要使用Dapper的对象列表。您可以通过NuGet在项目中获得Dapper。完成后,您需要构建一个模仿SELECT
语句的类。为了论证,我们说你的SELECT
陈述是:
SELECT * FROM TagsTable
让我们说TagsTable
看起来像这样:
public class TagsTable
{
public int Id { get; set; }
public string Tag { get; set; }
}
(记住这只是为了告诉你它是如何工作的)
现在您的代码如下所示:
private void LoadList()
{
List<TagsTable> tagsList;
using (IDbConnection connection =
new SqlConnection(Properties.Settings.Default.DBConnectionString))
{
tagsList = connection.Query<TagsTable>(sqlStatement);
}
}
此处Query
方法是一种挂起IDbConnection
的扩展方法;这就是Dapper的工作原理。代码不仅简洁,而且为您完成了映射,但Dapper快速
答案 1 :(得分:0)
您是否尝试将声明<string>
更改为<object>
,因为我可以正常使用
答案 2 :(得分:0)
只需构造要实例化的类型的实例,并根据reader
返回的数据设置它的属性。