DatenbankFile lesen und Struktur ermitteln

23/06/2008 - 20:16 von Klaus Mayer | Report spam
Hallo (Newbiefrage),

ich lese mit

<Snip>
string src = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pfad +
";Extended Properties=dBase 5.0;";
OleDbConnection con1 = new OleDbConnection(src);
con1.Open();
OleDbDataAdapter ada = new OleDbDataAdapter();
ada.SelectCommand = new OleDbCommand("Select * FROM "
+ datei + "", con1);
DataTable tab = new DataTable();
ada.Fill(tab);

ein dbf-File ein. Nun möchte ich die Daten gerne in der Originalform
weiterverwursten und dazu die Spaltennamen sowie die Datentypen
ermitteln.
Da die Anzahl der Spalten unbekannt ist, könnte ich doch nur per

foreach (System.Data.DataColumn colmn in tab.Columns)
{
Spalten.Add(colmn.ToString ());

durch das Array gehen und die Spaltennamen einsammeln...?
Mein Prob ist jetzt auch, wie bekomme ich die Datentypen mit

System.Data.DbType

zu den Spalten?

Bin über jeden Vorschlag dankbar!

Grüße,

Klaus
 

Lesen sie die antworten

#1 Robert Oberholzer
23/06/2008 - 20:56 | Warnen spam
Hallo Klaus,
Habe mir einmal eine kleine Funktion geschrieben.
Vielleicht hilft sie Dir weiter.

public static StringWriter GetTableSchema(SqlConnection conn, string
strTableName, StringWriter strCode)
{
try
{
string strSql = "SELECT * FROM " + strTableName;
conn.Open();
SqlCommand cmd = new SqlCommand(strSql, conn);
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.SchemaOnly);
DataTable tbl = rdr.GetSchemaTable();
rdr.Close();
conn.Close();

string strText = "";
int intProviderType;
SqlDbType typSqlDbType;

foreach (DataRow dRow in tbl.Rows)
{

intProviderType = (int)dRow["ProviderType"];
typSqlDbType = (SqlDbType)intProviderType;

strText = "";
strText = dRow["ColumnName"].ToString() + ", " +
dRow["ColumnOrdinal"].ToString() + ", " +
typSqlDbType.ToString() + ", " +
dRow["DataType"].ToString() + ", " +
dRow["ProviderSpecificDataType"].ToString() + ", " +
dRow["DataTypeName"].ToString() + ", " +
dRow["ColumnSize"].ToString() + ", " +
dRow["NumericPrecision"].ToString() + ", " +
dRow["NumericScale"].ToString() + ", " +
dRow["IsIdentity"].ToString().ToLower() + ", " +
dRow["isAutoIncrement"].ToString().ToLower() + ", " +
dRow["isReadOnly"].ToString().ToLower() + ", " +
dRow["AllowDBNull"].ToString().ToLower();

strCode.WriteLine(strText);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return strCode;
}

Gruss
Robert Oberholzer



"Klaus Mayer" wrote:

Hallo (Newbiefrage),

ich lese mit

<Snip>
string src = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pfad +
";Extended Properties=dBase 5.0;";
OleDbConnection con1 = new OleDbConnection(src);
con1.Open();
OleDbDataAdapter ada = new OleDbDataAdapter();
ada.SelectCommand = new OleDbCommand("Select * FROM "
+ datei + "", con1);
DataTable tab = new DataTable();
ada.Fill(tab);

ein dbf-File ein. Nun möchte ich die Daten gerne in der Originalform
weiterverwursten und dazu die Spaltennamen sowie die Datentypen
ermitteln.
Da die Anzahl der Spalten unbekannt ist, könnte ich doch nur per

foreach (System.Data.DataColumn colmn in tab.Columns)
{
Spalten.Add(colmn.ToString ());

durch das Array gehen und die Spaltennamen einsammeln...?
Mein Prob ist jetzt auch, wie bekomme ich die Datentypen mit

System.Data.DbType

zu den Spalten?

Bin über jeden Vorschlag dankbar!

Grüße,

Klaus

Ähnliche fragen