读取数据库中的行并将行值分配给Postgresql和C#中的字符串变量

时间:2014-07-23 07:44:25

标签: c# postgresql

我的数据库中有一个表,其中包含一列NewLanguage(varchar)。我在表中插入新语言,我想选择表的行并将它们分配给由&#39分割的字符串变量;,&#39 ;. 我尝试在代码中选择语言。

public string  SelectLanguagesFromDatabase()
    {

        NpgsqlCommand COM = new NpgsqlCommand(null,dbConnection);
        COM.CommandText = "select * from \"Languages\"";


    }

如何从数据库中选择roes并将它们分配给字符串变量?

In an example

如果语言列是

  NewLanguage

 C
 c++
 java

我想要一个字符串为" C,c ++,java"。 我怎样才能做到这一点 ? 感谢。

2 个答案:

答案 0 :(得分:2)

您可以使用string_agg连接逗号分隔文本中特定列的所有值,如下所示:

SELECT string_agg (NewLanguage,',') FROM "Languages"

答案 1 :(得分:0)

改编自user manual并使用Ilesh Patel's查询:

using System;
using System.Data;
using Npgsql;

public static class NpgsqlUserManual
{
  public static void Main(String[] args)
  {
    NpgsqlConnection conn = new NpgsqlConnection("Server=127.0.0.1;Port=5432;User Id=joe;Password=secret;Database=joedata;");
    conn.Open();

    NpgsqlCommand command = new NpgsqlCommand("SELECT string_agg(NewLanguage,',') FROM Languages", conn);
    String results;

    try
    {
      results = (String)command.ExecuteScalar();
      Console.WriteLine("{0}", results);
    }


    finally
    {
      conn.Close();
    }
  }
}