2017-08-05 54 views
0

我與MySQL使用了附加價值變量:獲取字符串的DataReader

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

而在PostgreSQL我得到以下錯誤:

"cannot convert from string to int"

我怎樣才能得到的字符串來自PostgreSQL數據庫?

回答

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