2017-08-05 1 views
0

war ich dies mit MySQL für Variable für Add-Wert verwenden:Get String aus postgresql Datenbank mit Datareader

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

Aber mit PostgreSQL bekomme ich folgende Fehlermeldung:

"cannot convert from string to int"

Wie kann ich String bekommen aus der PostgreSQL-Datenbank?

Antwort

1

Sie können es mit

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

Normalerweise will GetString eine ganze Zahl, die die Position der Spalte in der zurück-Cord repräsentieren. Aber jeder spezifische Provider kann GetString erweitern, um den Wert direkt aus dem String-Wert zu erhalten (wie der Provider für MySql tut), aber wenn sie diese Erweiterung nicht bereitstellen, müssen Sie das Pattern verwenden, das die Verwendung von GetOrdinal benötigt Natürlich könnten Sie die Erweiterung selbst schreiben. Fügen Sie diese Methode einfach in eine statische Klasse

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)); 
} 

und jetzt, Ihre Methode zum Aufruf von GetString wird funktionieren.

Verwandte Themen