Laden...

Prüfen ob Feld in Tabelle

Erstellt von MacWale vor 15 Jahren Letzter Beitrag vor 15 Jahren 2.067 Views
M
MacWale Themenstarter:in
37 Beiträge seit 2008
vor 15 Jahren
Prüfen ob Feld in Tabelle

verwendetes Datenbanksystem: <Microsoft SQL Server Compact>

Hallo,
ich möchte prüfen ob ein bestimmtes Feld in der Tabelle vorhanden ist. Oder erstmal schauen ob die Tabelle vorhanden ist.
Es gibt zwar die unschöne Möglichkeit mit


select feldname from tabelle

aber ich möchte ne schicke Möglichkeit wie das in Java auch Möglich ist. Dort kann ich die Tabellen in einer Datenbank mit einer Schleife durchforsten.

Zu allerletzt wäre es noch genial, wenn ich den Typ des Feldes überprüfen könnte.

Vielen Dank im Vorraus!
Gruß
MacWale

344 Beiträge seit 2006
vor 15 Jahren

Hallo MacWale

Das kann man doch alles mit ADO.Net machen.
DataSet
DataTable
DataColumn
DataRow und, und, und

Das ganze Zeug dazu findest du unter System.Data ind Hilfe sin auch Beispiele dazu:

System.Data

Gruss Lothi

R
494 Beiträge seit 2006
vor 15 Jahren

Oder so:

select COLUMN_NAME, DATA_TYPE from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='tablename'
M
MacWale Themenstarter:in
37 Beiträge seit 2008
vor 15 Jahren
Prüfen ob Feld in Tabelle

Hallo,

das mit dem DataSet hört sich gut an, hab ich soweit umgesetzt, bis auch den Datentyp und die Größe.
Über DataColumn bekommen ich zwar einen Datentyp, aber nicht den SQLDBType! Die Größe über die die Eigenschaft MaxLength bekomme ich auch nicht, es steht immer -1 drin.

Füllen:


string strSQL = "Select * from " + TableName;
SqlCeDataAdapter da = new SqlCeDataAdapter(strSQL, mConn);
da.Fill(mDataSet);
da.TableMappings.Add("Table", aliasTable);
da.Fill(mDataSet);

Dann hole ich mir die Tabelle in eine DataTable und überprüfe die Spalten mit ner foreach


foreach (  DataColumn  spalte in myTable.Columns)
{
}

Über spalte.DataType will ich mir nun den Spaltentyp rausholen, aber dort bekomme ich den SQLDBType nicht her.
Wo wird der abgelegt??
Mfg
MacWale

J
3.331 Beiträge seit 2006
vor 15 Jahren

Hallo,

der SqlDbType ist nur eine andere Bezeichnung für den DataColumn.DataType. Das kannst Du in :rtfm: SqlDbType-Enumeration überprüfen.

Zu MaxLength: In der SDK-Doku finde ich keine Details über den SqlCe-DbProvider. Versuche einmal die Schema-Informationen, die zum SqlProvider angeboten werden:

character_maximum_length
Maximale Länge in Zeichen für binäre Daten, Zeichendaten oder Text- und Bilddaten. Andernfalls wird NULL zurückgegeben.

Das kannst Du in den Select-Befehl von regen einbauen.

Jürgen

3.511 Beiträge seit 2005
vor 15 Jahren

Warum benutzt du nicht das, was regen bereits geschrieben hat?
Da musst du nicht mit irgendwelchen DataSets um dich schmeißen und hinterher durch die ganzen DataColumns iterieren. Ein simples Select auf die Information Schemas und du hast alle Informationen die du brauchst.

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)