如何从postgres获取文本数组数据到c#
How to gets text array data from postgres to c#
我已经从 postgres 调用了函数,输出是这样的
我正在使用 windows 表单来显示数据,我使用 npgsql 连接 c# 和 postgres d.b。
我的 BL class 函数如下
public List<User> view_data()
{
NpgsqlDataReader rdr;
List<User> lstUser = new List<User>();
if (con.State == ConnectionState.Closed)
{
con.Open();
}
NpgsqlCommand command = new NpgsqlCommand("select * from public.get_user_details", con);
rdr = command.ExecuteReader();
while (rdr.Read())
{
lstUser.Add(new User()
{
id = rdr.GetInt16(Convert.ToString(rdr["id"])),
roleName = rdr.GetString(Convert.ToString(rdr["rolename"])),
firstName = rdr.GetString(rdr.GetOrdinal("firstname")),
lastName = rdr.GetString(rdr.GetOrdinal("lastname"))
});
}
rdr.Close();
return lstUser;
}
获取角色名错误。错误是无法将字符串转换为字符串[]
我的用户class如下
public class User
{
public int id
{ get; set; }
public string firstName
{ get; set; }
public string lastName
{ get; set; }
public string email
{ get; set; }
public string userName
{ get; set; }
public string[] roleName
{ get; set; }
}
我的问题是如何使用 npqsql 数据在 c# 中分配文本数组数据 reader?
在此区域出现错误 => roleName = rdr.GetString(Convert.ToString(rdr["rolename"]))
postgres 给出的角色名称输出是文本数组。 IE;一列中包含多个值。 IE; {管理员,用户}。因此需要使用数据 reader.
将 postgres 文本数组设置为 c# 格式
保持您的代码不变,但将 SQL 查询替换为下面的查询。它将 roleName
数组的内容连接(聚合)到一个逗号分隔的列表字符串中。所以而不是
select * from public.get_user_details
使用这个:
select
id,
firstname,
lastname,
array_to_string(rolename, ',') as rolename
from public.get_user_details
为了便于阅读,我添加了新行,您可以删除它们。顺便说一下,生产代码中的 select *
通常会带来麻烦。
我已经从 postgres 调用了函数,输出是这样的
我正在使用 windows 表单来显示数据,我使用 npgsql 连接 c# 和 postgres d.b。 我的 BL class 函数如下
public List<User> view_data()
{
NpgsqlDataReader rdr;
List<User> lstUser = new List<User>();
if (con.State == ConnectionState.Closed)
{
con.Open();
}
NpgsqlCommand command = new NpgsqlCommand("select * from public.get_user_details", con);
rdr = command.ExecuteReader();
while (rdr.Read())
{
lstUser.Add(new User()
{
id = rdr.GetInt16(Convert.ToString(rdr["id"])),
roleName = rdr.GetString(Convert.ToString(rdr["rolename"])),
firstName = rdr.GetString(rdr.GetOrdinal("firstname")),
lastName = rdr.GetString(rdr.GetOrdinal("lastname"))
});
}
rdr.Close();
return lstUser;
}
获取角色名错误。错误是无法将字符串转换为字符串[]
我的用户class如下
public class User
{
public int id
{ get; set; }
public string firstName
{ get; set; }
public string lastName
{ get; set; }
public string email
{ get; set; }
public string userName
{ get; set; }
public string[] roleName
{ get; set; }
}
我的问题是如何使用 npqsql 数据在 c# 中分配文本数组数据 reader?
在此区域出现错误 => roleName = rdr.GetString(Convert.ToString(rdr["rolename"]))
postgres 给出的角色名称输出是文本数组。 IE;一列中包含多个值。 IE; {管理员,用户}。因此需要使用数据 reader.
将 postgres 文本数组设置为 c# 格式保持您的代码不变,但将 SQL 查询替换为下面的查询。它将 roleName
数组的内容连接(聚合)到一个逗号分隔的列表字符串中。所以而不是
select * from public.get_user_details
使用这个:
select
id,
firstname,
lastname,
array_to_string(rolename, ',') as rolename
from public.get_user_details
为了便于阅读,我添加了新行,您可以删除它们。顺便说一下,生产代码中的 select *
通常会带来麻烦。