【发布时间】:2017-11-23 08:39:49
【问题描述】:
我在从数据库中获取数据时遇到问题,因为我是 C# 语言的新手。我认为 ExecuteReader 应该检索所有行。顺便说一句,我无法访问充满对象的数据。而 reader.GetString(0) 它只返回给我数组对象的索引。
是否有任何来自 c# 的属性可以访问数据库中的行?
我正在寻找解决这个问题的答案。我会拨出帮助!
这是我目前的代码:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Npgsql;
namespace Sample.Controllers
{
public class HomeController : Controller
{
public string Index()
{
var connString = "Host=localhost;Username=postgres;Password=123456;Database=dotnet_core_db";
using (var conn = new NpgsqlConnection(connString))
{
conn.Open();
// Retrieve all rows
using (var cmd = new NpgsqlCommand("SELECT * FROM Persons", conn))
using (var reader = cmd.ExecuteReader())
while (reader.Read())
{
Console.WriteLine(reader.GetString(0));
Console.WriteLine(reader.GetString(1));
Console.WriteLine(reader.GetString(2));
Console.WriteLine(reader.GetString(3));
Console.WriteLine(reader.GetString(4));
ViewData["connString"] = connString;
}
}
return connString;
}
public IActionResult Error()
{
ViewData["RequestId"] = Activity.Current?.Id ?? HttpContext.TraceIdentifier;
return View();
}
}
}
预期结果
{
{
id: 92,
name: "foo",
last_name: "bar",
address: "adress Of foo",
city: "city of foo"
},
{
id: 872,
name: "foo1",
last_name: "bar 2",
address: "address of foo1",
city: "city of foo1"
}
}
【问题讨论】:
-
顺便说一句,连接字符串应该存储在配置文件中
-
你得到了什么?
-
@TimSchmelter 这只是一个示例,但我主要关注的是数据检索。
-
@RanjitSingh 我有 reader.GetString(0) = 92, reader.GetString(1) = 'foo', reader.GetString(2) = 'bar' ...但我的期望是 {{id: 92, name: "foo", last_name: "bar", address: "adress Of foo", city: "city of foo"}}
-
您可以尝试
reader["ColumnName"]检索特定列的数据。然后你必须为此调用 tostring() 或任何你想要的演员。