Ich habe ein kleines Programm, um Datenbanktabellen nach Excel "herunterzuladen".DataReader Typspezifikation erhalten SQL Server
Ich möchte den Spaltentyp der zweiten Zeile hinzufügen und ich habe es mit der folgenden Funktion versucht. Es funktioniert gut, aber die GetDataTypeName(i)
kehrt nur int, nvarchar
aber ich brauche die komplette Typangabe wie diese
nvarchar(255), decimal(19, 8)
Gibt es eine andere Funktion diese aus der Datenbank zu bekommen?
SqlDataReader dataReader = command.ExecuteReader();
// adds the names and the types if the table has no values
if (!dataReader.HasRows || !withValues)
{
for (int i = 0; i < dataReader.FieldCount; i++)
{
names.Add(dataReader.GetName(i));
types.Add(dataReader.GetDataTypeName(i));
}
}
Keines Diese Fragen scheinen die Größe/Genauigkeit des Feldes zu ermitteln. 'dataReader.GetSchemaTable()' gibt Ihnen vollständige Metadaten für alle Spalten. –
Für die Größe gehen Sie über ['.GetSchemaTable()'] (https: // msdn. microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.getschematable(v=vs.110).aspx) (Nicht sicher, ob es jedoch Präzision/Skalierung freigibt) –
Sie benötigen diese Informationen nicht, um eine Tabelle nach Excel zu exportieren. Verwenden Sie entweder das SQL Server-eigene SSIS oder verwenden Sie eine Bibliothek wie EPPlus, um eine echte Excel-Datei (dh 'xlsx') mit einem Aufruf so einfach wie' sheet.LoadFromDataTable' zu erzeugen, wie hier [hier] (https://epplus.codeplex.com/wikipage? title = WebapplicationExample). Sie können die resultierenden Spalten nach Bedarf formatieren –