簡體   English   中英

C#.net核心如何使用npgsql檢索所有行

[英]C# .net core how can I retrieve all rows using npgsql

我正在用Npgsql測試新的.net Core RC2,因為我有一個postgres數據庫。 我對所有這些都是新手,但是我想做的是從數據庫中檢索5條記錄,然后以Json格式返回。 但是,即使看到所有5條記錄都已返回,我也只能輸出1條記錄。 我在這里想念什么..

public JsonResult About()
{
    using (NpgsqlConnection conn = new NpgsqlConnection("myconnection"))
    {
        conn.Open();

        string city="";
        string state= "";
        NpgsqlCommand cmd = new NpgsqlCommand("select city,state from streams limit 5", conn);

        using (var reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                city = reader.GetString(reader.GetOrdinal("city"));
                state = reader.GetString(reader.GetOrdinal("state"));
            }
        }
        return Json(city);
    }
}

我猜測Json對象中返回的city的值將僅包含查詢返回的最后一個城市和州。 while循環在每次迭代時都會覆蓋city變量。

將每個城市和州存儲在一個陣列中將使您可以返回所有5個城市。

代碼更新

string city="";
string state= "";
NpgsqlCommand cmd = new NpgsqlCommand("select city,state from streams limit 5", conn);

var cities = new string[5]();
using (var reader = cmd.ExecuteReader())
{
    var i = 0;
    while (reader.Read())
    {
        city = reader.GetString(reader.GetOrdinal("city"));
        state = reader.GetString(reader.GetOrdinal("state"));

        cities[i++] = city;
    }
}

// Aggregate into one string
var citiesString = String.Join(", ", cities);

return Json(citiesString);

數組返回

另一方面,您可以只返回將使用json序列化為javascript數組的數組。

string city="";
string state= "";
NpgsqlCommand cmd = new NpgsqlCommand("select city,state from streams limit 5", conn);

var cities = new string[5]();
using (var reader = cmd.ExecuteReader())
{
    var i = 0;
    while (reader.Read())
    {
        city = reader.GetString(reader.GetOrdinal("city"));
        state = reader.GetString(reader.GetOrdinal("state"));

        cities[i++] = city;
    }
}
return Json(cities);

我建議使用實體框架,然后將模型序列化為json。 檢出Npgsql.EntityFrameworkCore.PostgreSQL -Pre nuget包。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM