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

时间:2017-08-05 19:18:57

标签: c# postgresql datareader

我用它来为MySQL增加变量值:

var var1 = datareader.GetString("something");

但是使用PostgreSQL我会收到以下错误:

  

“无法从字符串转换为int”

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

1 个答案:

答案 0 :(得分:1)

你可以用

获得它
var var1 = datareader.GetString(reader.GetOrdinal("something"));

通常GetString需要一个整数来表示返回记录集中列的位置。但是任何特定的提供者都可以扩展GetString以直接从字符串值中获取值(如MySql的提供者那样),但如果他们不提供此扩展,则需要使用需要使用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的方式将起作用。