使用 DataReader 从 PostgreSQL 数据库中获取字符串

Get string from postgresql database with datareader

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

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

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

"cannot convert from string to int"

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

你可以通过

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

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

当然你可以自己写扩展。只需将此方法添加到静态 class

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 的方式将起作用。