Vom DataColumn den Datentyp ändern

Black_Deal

Mitglied
Hallo

Kann man von einen DataColumn den Datentype ändern?
Denn ich habe in einer Datenbank eine Spalte mit dem Datentype bit. Nun möchte ich anstatt er true oder false in das DataSet reinschreibt halt meinen eigenen Text entsprechend des Wertes reinschreiben.

Es würde auch anders funktionieren indem ich einfach eine neues DataSet erstelle und alle Columns so erstelle wie ich sie will, aber das nicht gerade die ausbere art denke ich...

Kann mir da einer helfen...

mfg
 
Hallo Black_Deal!

Klar kannst du das. Wenn du nur die Spalte im Dataset ändern willst, gibt es ja die "DataTyp" - Eigenschaft, allerdings ändert das an der Datanbank nichts.

Ich würde so vorgehen: Zuerst die Spalte in der Datenbank mit einem geeigneten SQL Command ändern, und dann einfach ein neues DataSet füllen.

Zum SQL Command, das könnte etwa so aussehen:
Code:
string conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Mode=Share Deny Read|Share Deny Write;Data Source="+path+";Jet OLEDB: Database;"
string modCol = "ALTER TABLE Datenbankname MODIFY (Spaltenname TO Spaltenname CHAR(50))";

OleDbConnection conn = new OleDbConnection(conStr);
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandText = modCol;
	
try
{
	conn.Open();
	cmd.ExecuteNonQuery();
	conn.Close();
}
catch (Exception ex)
{
	Message_Show(ex.Message, 0);
}

Achtung: Bei "...OLEDB: Database..." ohne Leerschlag dazwischen, dieser Editor macht irgendwie ein Smile daraus wenn ich es zusammenschreibe...

War's das?
 
Hallo, und danke für deine antwort.
So wie ich das alles jetzt verstanden habe ändert SqlCmd die gesammt Spalte in der DB dauerhalt. Das währe aber nicht der Sinn von der sache da noch andere User mit anderen Applicationen auf die Datenbank zugreifen. Das währe nicht gerade schlau dan die DB zu ändern...

Aber der vorschlag mit den DataType gefällt mir schon besser.
Ich habe mir das mal angesehen, aber ich komme da auch auf keinen grünen Zweig...

Ich erstelle das DataSet und befülle es dan auch gleich mit den werten aus der DB. Danach will ich halt den Datentype von einem Column ändern, aber da schreit er das der typ nicht geändert werden kann wei sich noch object in der Spalte befinden. Die habe ich aber gelöscht.

Bin echt Ratlos....

mfg
 
...ändert SqlCmd die gesammt Spalte in der DB dauerhaft.
Ja, das ist schon richtig. Aber wenn du nur die Spalte im DataSet änderst, wirst du mit Sicherheit Probleme beim Updaten (Rückspeichern) haben...

Nun zum Problem mit dem DataType: Ich glaube du kannst das DataSet nicht direkt ändern, soviel ich weis, stellt das nur die Verbindung zur Datenbank dar - Irtum vorbehalten.
Du kannst dir mit dem DataSet ein DataTable erstellen lassen, wo du dann ändern kannst was du willst!

Etwa so:
Code:
DataSet ds = new DataSet();
DataTable dt;
DataColumn dc;
...
da.Fill(ds, "Name");
dt = ds.Tables["Name"];
dc = dt.Columns[1];
dc.DataType = System.Type.GetType("System.String");
 
Niro99 hat gesagt.:
...wenn du nur die Spalte im DataSet änderst, wirst du mit Sicherheit Probleme beim Updaten (Rückspeichern) haben...
Nein, werde ich nicht haben, da ich das nicht über das DataGrid mache.

Gut, wenn es da keine möglichkeit gibt, dan werde ich das wol mit nem neuen Table machen müssen.

Auf jeden fall danke für deine bemühungen!

mfg
 
Zurück