Laden...
A
a957m myCSharp.de - Member
Dipl. Ing. Informationstechnik Stuttgart Dabei seit 20.05.2007 254 Beiträge
Benutzerbeschreibung
Ich habe ca. vor einem Halben Jahr begonnen mich mit C# zu beschäftigen. Folgende Themen habe ich mir schon angeignet Windows Forms, Datenbankprogrammierung

Forenbeiträge von a957m Ingesamt 254 Beiträge

08.06.2007 - 21:39 Uhr

Hallo,

zu dem Intellisens Thema bin ich nicht weitergekommen. Ansonsten bin ich mit meinem SQL-Editor soweit durch. Wenn jemand interesse hat kann ich auch gern die Sourcen hochladen. Vielleicht weiss jemand ja noch ein paar schöne Änderungen.

Das Thema mit den Tabelleninformationen geht folgendermaßen :

DataTable table = con.GetSchema("Tables");

foreach (DataRow r in table.Rows)
{
                string table_type = (string)r["Table_Type"];
                string table_name = (string)r["Table_Name"];
                if ( table_type == "TABLE")
                    listTables.Items.Add(table_name);
 }

Spalteninformationen gehen so :

string[] filter = new string[] { null, null, _table, null };
            DataTable table = con.GetSchema("Columns",filter);

            foreach (DataRow r in table.Rows)
            {
                string col_name = (string)r["COLUMN_NAME"];
                string col_type = (string)r["TYPE_NAME"];
                int col_len = Convert.ToInt32(r["COLUMN_SIZE"]);
                
                listColumns.Items.Add(new ListViewItem(new string[] { col_name, col_type, col_len.ToString() }));
            }
08.06.2007 - 12:47 Uhr

Hallo,

ich denke es gibt in dem Zusammenhang zwei Sachen zu beachten.

Wenn Du die Interpretation von Escape Sequenzen innerhalb eines Strings ausschalten willst, kannst Du den verbatim Operator @ vor den String stellen.

Beispiel :

Console.Writeln(@"Hallo\nWelt);
Liefert keinen Zeilenumbruch.

Das zweite ist natürlich, dass ein ' innerhalb eines Datenbank Kommandos normalerweise benutzt wird, um die Begrenzung einer Zeichenkette anzugeben.

Dieses Problem hatte ich auch schon, mir ist nur folgende Lösung dazu eingefallen. Die String's die eingefügt werden sollen zu durchsuchen und alle einfachen ' durch doppelte zu ersetzen.

private string escape(string eingabe)
 {
            return eingabe.Replace(@"'", @"''");
  }
07.06.2007 - 10:55 Uhr

Hallo,

ob solch ein Verweis immer weiterhilft, halte ich für fraglich ...

Anbei ein kleines Beispiel :

 TextBox found = null;
            foreach (Control c in this.Controls)
            {
                if (c is TextBox)
                {
                    if (c.Name == "textBox1")
                    {
                        found = (TextBox)c;
                        break;
                    }
                }
            }

            found.Text = "Gefunden";
05.06.2007 - 11:07 Uhr

Ich bin gerade dabei einen kleinen SQL-Editor zu entwickeln, denn ich in verschiedenen Applikationen einbinden kann. Dabei habe ich eine Textbox für die Eingabe des SQL-Statements und ein DataGrid für das Ergebnis. Das ist recht schnell und einfach zu machen.

Ich würde aber gern die Eingabe des SQL-Statements dahingehend unterstützen, dass ich beim Tippen mit Intellisens vorhandene Tabellen bzw. Spaltenname anzeige. Dabei habe ich folgendene Probleme :

* Gibt es eine Möglichkeit unabhängig von der Datenbank (Access, Oracle ...) die vorhandenen Tabellen und deren Aufbau abzurufen.

* Wie funktioniert das Intellisens Thema ?

Hat mir jemand einen Tip ? Vielen Dank im Voraus.