C# 使用datareader从postgresql数据库获取字符串

C# 使用datareader从postgresql数据库获取字符串,c#,postgresql,datareader,C#,Postgresql,Datareader,我用它为MySQL的变量添加值: var var1 = datareader.GetString("something"); 但是使用PostgreSQL,我会得到以下错误: 无法从字符串转换为int 如何从PostgreSQL数据库中获取字符串?您可以使用 var var1 = datareader.GetString(reader.GetOrdinal("something")); 通常GetString需要一个整数来表示列在返回记录集中的位置。但是任何特定的提供者都可以像MySql提供

我用它为MySQL的变量添加值:

var var1 = datareader.GetString("something");
但是使用PostgreSQL,我会得到以下错误:

无法从字符串转换为int

如何从PostgreSQL数据库中获取字符串?

您可以使用

var var1 = datareader.GetString(reader.GetOrdinal("something"));
通常GetString需要一个整数来表示列在返回记录集中的位置。但是任何特定的提供者都可以像MySql提供者那样扩展GetString以直接从字符串值中获取值,但是如果他们不提供此扩展,则需要使用需要使用GetOrdinal的模式

当然,您可以自己编写扩展。只需在静态类中添加此方法

public static object GetString(this NpgsqlDataReader source, string colname)
{
     if(string.IsNullOrEmpty(colname))
        throw ArgumentException("Need a column name");

     return source.GetString(source.GetOrdinal(colname));
}
现在,您调用GetString的方法将起作用