使用 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 的方式将起作用。
我用它来为 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 的方式将起作用。