tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
23
ZUGRIFFE
1459
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    krokev krokev ist offline Mitglied
    Registriert seit
    Oct 2011
    Beiträge
    24
    Bin Programmieranfänger und habe ein Projekt in dem ich eine GUI dynamisch aus der Datenbank befühlen muss.
    bzw. die Spaltennamen der Datenbank sollten Feldnamen in meiner GUI sein.
    zb. Spaltennamen Vornamen - so sollte die Ausgabe in der Gui Vornamen sein

    Kann mir hierbei jemand weiterhelfen?

    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data.SqlClient;
     
    namespace visitor_management_2011
    {
        class DataAccess
        {
            private static string connectionString;
            public static void SetConString(string conString)
            {
                connectionString = "SERVER=;dautsql01" +
                                "DATABASE=Visitis.dbo";
            }
     
            public static DataTable ExecuteQuery(string sql)
            {
                SqlConnection connection = new SqlConnection(connectionString);
                SqlDataAdapter SQLAdapter = new SqlDataAdapter(sql, connection);
                SqlCommandBuilder commandbuilder = new SqlCommandBuilder(SQLAdapter);
                try
                {
                    DataTable ds = new DataTable();
                    connection.Open();
                    SQLAdapter.Fill(ds);
                    connection.Close();
                    return ds;
                }
                catch (Exception)
                {
                    return null;
                }
                finally
                {
                    connection.Close();
                }
            }
     
            public static int ExecuteNonQuery(string sql)
            {
                SqlConnection connection = new SqlConnection(connectionString);
                connection.ConnectionString = connectionString;
                try
                {
                    connection.Open();
                    SqlCommand command = new SqlCommand(sql, connection);
                    return command.ExecuteNonQuery();
                }
                catch (Exception)
                {
                    return -1;
                }
                finally
                {
                    connection.Close();
                }
     
            }
     
            public static bool HasRecords(DataTable datatable)
            {
                return datatable != null && datatable.Rows.Count > 0 ? true : false;
            }
     
     
        }
    }
    Geändert von sheel (20.10.11 um 13:56 Uhr) Grund: Doppel+Codetags
     

  2. #2
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.504
    Hi und Willkommen bei tutrials.de

    Was genau ist das Problem dabei?
    Fehlermeldungen etc? Oder ...?
    krokev bedankt sich. 
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  3. #3
    krokev krokev ist offline Mitglied
    Registriert seit
    Oct 2011
    Beiträge
    24
    1: bekomme ich die Meldung DataTable konnte im Namespace nicht gefunden werden
    2: Habe ich keine Ahnung welchen Code ich verwenden muss um die Spaltennamen der Datenbank als Feldnamen in der Gui auszugeben?
     

  4. #4
    Avatar von VScan
    VScan VScan ist offline Mitglied Gold
    Registriert seit
    Dec 2008
    Ort
    Munich
    Beiträge
    131
    Hallo,


    1: bekomme ich die Meldung DataTable konnte im Namespace nicht gefunden werden
    Lösung: einfügen der using-Direktive am Anfang Deines Codes
    Code csharp:
    1
    
    using System.Data;


    2: Habe ich keine Ahnung welchen Code ich verwenden muss um die Spaltennamen der Datenbank als Feldnamen in der Gui auszugeben?
    Naja, wenn Du es geschafft hast, dass der DataTable gefüllt wird, kannst Du mit folgendem Code iterativ auf die Spaltennamen zugreifen:
    Code csharp:
    1
    2
    3
    4
    
    for(int index = 0; index < dataTable.Columns.Count; index++)
    {
         System.Console.WriteLine(dataTable.Columns[index].ColumnName);
    }


    Hoffe, ich konnte weiterhelfen

    Viel Grüße
    Geändert von VScan (20.10.11 um 19:45 Uhr) Grund: ABC
    krokev bedankt sich. 

  5. #5
    krokev krokev ist offline Mitglied
    Registriert seit
    Oct 2011
    Beiträge
    24
    danke für deine hilfe problem eins ist behoben und zu zwei

    wie kann ich die datatable befühlen und in meiner leeren gui ausgeben wie gesagt ich bin anfänger und habe keine ahnung was die nächsten schritte sind

    LG
     

  6. #6
    Avatar von VScan
    VScan VScan ist offline Mitglied Gold
    Registriert seit
    Dec 2008
    Ort
    Munich
    Beiträge
    131
    Hallo,

    zu folgenden Problemen:

    wie kann ich die datatable befühlen und in meiner leeren gui ausgeben wie gesagt ich bin anfänger und habe keine ahnung was die nächsten schritte sind
    1. Funktionsaufruf testen (DataAccess.ExecuteQuery("Select * from ...."))

    2. Eine Textbox in deine Form ziehen (ich gehe davon aus, dass Du mit Visual Studio 2010 arbeitest, da Du bisher nichts erwähnt hast)

    3. überlegen, wie das Ereignis augelöst werden soll, das die Daten von der Datenbank abholt (über einen button-click; gleich beim programmstart; alle 10 minuten, ....)

    4. Die Textbox befüllen


    Solltest du die oben genannten Schritte nicht ausführen können ohne weitere Hilfe, würde ich sagen, Du solltest Dir mal die MSDN angucken, da wird erklärt, wie man Schritt für Schritt eine WindowsForm anlegt.

    Hier der Link: http://msdn.microsoft.com/de-de/libr...=vs.90%29.aspx


    Viele Grüße
     

  7. #7
    krokev krokev ist offline Mitglied
    Registriert seit
    Oct 2011
    Beiträge
    24
    zu 4. die ausgabe soll nicht in textboxen erfolgen sondern in form von einem label****

    habe vergessen zu erwähnen das ich drei verschiedene kategorien habe und je kategorie eine verschiede ausgabe haben sollte, hierzu diehnen mir zwei extra tabellen in welcher definiert werden zu welcher kategorie welche feldnamen ausgegeben werden
     

  8. #8
    Avatar von VScan
    VScan VScan ist offline Mitglied Gold
    Registriert seit
    Dec 2008
    Ort
    Munich
    Beiträge
    131
    Hallo,

    kein Problem, ich denke, dass viele Komponenten für die Datenpräsentation in Frage kommen, je nachdem, was von der Anwendung gefordert wird, eigenen sich die verschiedenen .Net-Klassen einmal mehr oder weniger.

    Viele Grüße
     

  9. #9
    krokev krokev ist offline Mitglied
    Registriert seit
    Oct 2011
    Beiträge
    24
    okay cool
    muss ich mal schaun hättest du da ein Beispiel(code)
     

  10. #10
    Avatar von VScan
    VScan VScan ist offline Mitglied Gold
    Registriert seit
    Dec 2008
    Ort
    Munich
    Beiträge
    131
    Hey,

    könntest Du das Problem, das Du im Moment hast, nochmal genauer erörtern?

    Was ist der Zweck der Anwendung wenn ich fragen darf?

    Viele Grüße
     

  11. #11
    krokev krokev ist offline Mitglied
    Registriert seit
    Oct 2011
    Beiträge
    24
    des sollte eine eingabemaske werden mit drei verschieden eingabe kategorien und je nach auswahl im dropdown sollten verschiedene felder nachgeladen werden

    derzeit scheitert es daran die spaltennamen MYSQL in der gui auszugeben bzw sie in kategorien zu gliedern und angschliessend auszugeben
     

  12. #12
    Avatar von VScan
    VScan VScan ist offline Mitglied Gold
    Registriert seit
    Dec 2008
    Ort
    Munich
    Beiträge
    131
    Hey,

    eine konkretere Problembeschreibung wäre schon ganz gut!

    Woran genau scheitert es denn?
    An der MySql-Connection, am Zugriff auf die Spalten, bei der Gliederung der Daten, bei der Datenausgabe?

    Normalerweise werden die Codeabschnitte gepostet, bei denen man ein Problem hat!


    Zusätzlich würde ich empfehlen, dass Du Dir folgende Seite rein ziehst, denn der Code, wie er bei Dir im ersten Schnippsel zu sehen ist, ist bei der Fehlerbeseitigung nicht sehr hilfreich:

    Code csharp:
    1
    2
    3
    4
    
    catch (Exception)
                {
                    return null;
                }


    stattdessen sollte da mindestens folgendes stehen:


    Code csharp:
    1
    2
    3
    4
    5
    6
    
    catch (Exception e)
                {
                    Console.WriteLine("Error while trying to connect to database: " + e.Message() + "\r\n
                                       Stacktrace: " + e.StackTrace());
                    return null;
                }

    Hier die Seite für das Exception-Handling:

    http://msdn.microsoft.com/de-de/libr...VS.100%29.aspx


    Viele Grüße
    krokev bedankt sich. 

  13. #13
    krokev krokev ist offline Mitglied
    Registriert seit
    Oct 2011
    Beiträge
    24
    cool danke für den einwand

    mysql connection ist erfolgreich, zugriff auf die spalten sollte nicht das problem sein
    die datenausgabe macht allerdins nach wie vor probleme
    wie bekomme ich zb diesen select befehl in ein label so das er direkt beim aufruf des programms befühlt wird

    SELECT visitor_database.last_name
    FROM visitation CROSS JOIN
    visitor_database
     

  14. #14
    Avatar von VScan
    VScan VScan ist offline Mitglied Gold
    Registriert seit
    Dec 2008
    Ort
    Munich
    Beiträge
    131
    Bei Deiner Form, gibt es bei den Ereignissen, das Form_Load-Event, hier kann man code platzieren, der beim Laden der Form ausgeführt werden soll.

    Hierzu markiert man die Form per Mausklick und klickt im Eigenschaftenfenster auf das Blitzsymbol (Ereignisse), hier findet man nun das Form_Load event, das lediglich doppelt geklickt werden muss, um das Ereignis zu verknüpfen.

    Ich denke Du meinst das Ergebnis des "selects", das Du in einem Label haben willst!?

    Wenn ja, sollte es ungefähr so aussehen:

    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    private void Form1_Load(object sender, EventArgs e)
            {
                String mySqlCmd = "SELECT visitor_database.last_name
    FROM visitation CROSS JOIN
    visitor_database ";
                String connectionString = "SERVER=;dautsql01" +
                                "DATABASE=Visitis.dbo";
                DataAccess.SetConString("") // <- INFO: Deine Methode ausbessern, die setzt immer den gleichen ConnectionString
                DataTable dataTable = DataAccess.ExecuteQuery(mySqlCmd);
     
     
                // sonstiger code (z.B. schreibst Du hier dann das ergebnis in ein Label)
            }


    Kennst Du die Klasse DataGridView? Wenn nein, würde ich mir diese mal angucken, damit lassen sich die Daten in einfachster form präsentieren, ohne viel Programmieraufwand:

    http://www.dotnetperls.com/datagridview-tutorial
    Geändert von VScan (24.10.11 um 12:13 Uhr) Grund: ABC
    krokev bedankt sich. 

  15. #15
    krokev krokev ist offline Mitglied
    Registriert seit
    Oct 2011
    Beiträge
    24
    okay danke das mySQLCmd muss ich aber noch aufrufen damit es ausgegeben wird oder? wie schaut so ein aufruf in einenem label aus?
    nach dem aufruf sollte auch diese fehlermeldung verschwinden oder?
    String connectionString = "SERVER=;dautsql01" + "DATABASE=Visitis.dbo";
    die Variable Connectionstring is zugewiesen ihr wert wird aber nie verwendet

    und bezüglich SetConString da sollte doch immer der gleiche connectionstring aufgerufen werden oder nicht?

    meine aktueller code in der textbox:
    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    
              private void richTextBox1_TextChanged(object sender, EventArgs e)
                          {
                String mySqlCmd = "SELECT visitor_database.last_name FROM visitation CROSS JOIN visitor_database ";
                String connectionString = "SERVER=dautsql01; DATABASE=Visitors.dbo";
                DataAccess.SetConString(connectionString);
                DataTable dataTable = DataAccess.ExecuteQuery(mySqlCmd);
                Console.WriteLine(mySqlCmd);
                          }
     
    der string mySqlCmd wird nur als text ausgegeben allerdings nicht die daten der datenbank was is hierbei faul? 
    bzw ist etwas mit meiner data_accessklasse faul****
     
     public static void SetConString(string conString)
            {
                connectionString = "SERVER=dautsql02; DATABASE=Visitors.dbo";
            }
     
    public static DataTable ExecuteQuery(string sql)
            {
               
                try
                {
                    SqlConnection connection = new SqlConnection(connectionString);
                    SqlDataAdapter SQLAdapter = new SqlDataAdapter(sql, connection);
                    SqlCommandBuilder commandbuilder = new SqlCommandBuilder(SQLAdapter);
                    DataTable ds = new DataTable();
                    connection.Open();
                    SQLAdapter.Fill(ds);
                    connection.Close();
                    return ds;
                }
     
                catch (Exception e)
                {
                    Console.WriteLine("Error while trying to connect to database: ");
                    return null;
                }    
            }
     
     public static int ExecuteNonQuery(string sql)
            {
                SqlConnection connection = new SqlConnection(connectionString);
                connection.ConnectionString = connectionString;
                try
                {
                    connection.Open();
                    SqlCommand command = new SqlCommand(sql, connection);
                    return command.ExecuteNonQuery();
                }
                catch (Exception)
                {
                    return -1;
                }
                finally
                {
                    connection.Close();
                }
     
            }
     
    public static bool HasRecords(DataTable datatable)
            {
                return datatable != null && datatable.Rows.Count > 0 ? true : false;
            }

    edit:
    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    public void button1_Click(object sender, EventArgs e)
            {
                
                String mySqlCmd = "SELECT visitor_database.last_name FROM visitation CROSS JOIN visitor_database ";
                String connectionString = "SERVER=;dautsql01" + "DATABASE=Visitis.dbo";
                DataAccess.SetConString("");
                DataTable dataTable = DataAccess.ExecuteQuery(mySqlCmd); 
                MessageBox.Show(mySqlCmd);
            }
    hab das in einen button verpackt und hab aber momentan das er mit einen error bringt

    in der klasse data_access:
    Code csharp:
    1
    
    SqlConnection connection = new SqlConnection(connectionString);
    Fehlermeldung:
    ArgumntExeption wurde nicht behandelt
    Keyword not supported #dautsql01database#

    Woran liegt das? bzw was muss geändert werden um diesen Fehler zu vermeiden.

    edit2:
    Bin Programmieranfänger und habe momentan ein Problem meine Daten aus der Datenbank in einer Textbox auszugeben
    Dabei gibt es konkret folgende zwei Probleme:
    1. Die Datenbankverbindung sollte hergestellt werden und überprüft werden allerdings bekomme ich keine Fehlermeldung wen ich eine Falsche Datenbank eintrage somit kann etwas mit meiner Dataaccessklasse nicht in Ordnung sein/der Aufruf dieser Metoden macht Probleme.
    Meine Dataaccessklasse:
    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    
    class DataAccess
        {
            public static string connectionString;
     
    public static void SetConString(string conString)
            {
                connectionString = "SERVER=dautsql02; DATABASE=Visitors.dbo";
            }
     public static DataTable ExecuteQuery(string sql)
            {
                try
                {
                    SqlConnection connection = new SqlConnection(connectionString);
                    SqlDataAdapter SQLAdapter = new SqlDataAdapter(sql, connection);
                    SqlCommandBuilder commandbuilder = new SqlCommandBuilder(SQLAdapter);
                    DataTable ds = new DataTable();
                    connection.Open();
                    SQLAdapter.Fill(ds);
                    connection.Close();
                    return ds;
                }
     
                catch (Exception e)
                {
                    Console.WriteLine("Error while trying to connect to database: ");
                    return null;
                }    
            }
     
     public static int ExecuteNonQuery(string sql)
            {
                SqlConnection connection = new SqlConnection(connectionString);
                connection.ConnectionString = connectionString;
                try
                {
                    connection.Open();
                    SqlCommand command = new SqlCommand(sql, connection);
                    return command.ExecuteNonQuery();
                }
                catch (Exception)
                {
                    return -1;
                }
                finally
                {
                    connection.Close();
                }
     
            }
     
      public static bool HasRecords(DataTable datatable)
            {
                return datatable != null && datatable.Rows.Count > 0 ? true : false;
            }
    Der Aufruf der Funktionen:
    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    
    public void Form1_Load_1(object sender, EventArgs e)
               {
                DataAccess.SetConString(string conString);  
                DataAccess.ExecuteNonQuery(string sql);
                DataAccess.ExecuteQuery(string sql);
                DataAccess.HasRecords(DataTable datatable);
    }

    Mein Versuch die Daten in einer Textbox auszugeben:
    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    
    private void richTextBox1_TextChanged(object sender, EventArgs e)
            {
                String mySqlCmd = "SELECT visitor_database.last_name FROM visitation CROSS JOIN visitor_database ";
                String connectionString = "SERVER=dautsql01; DATABASE=Visitors.dbo";
                DataAccess.SetConString(connectionString);
                DataTable dataTable = DataAccess.ExecuteQuery(mySqlCmd);
                Console.WriteLine(mySqlCmd);
            }

    Ich hoffe sehr das mit jemand weiterhelfen kann

    LG KROKEV
    Geändert von sheel (24.10.11 um 17:25 Uhr) Grund: Doppelpost/thread, falsches Forum, Codetags
     

Ähnliche Themen

  1. Befüllen einer MySQL DB mit großen Daten
    Von ElJarno im Forum Algorithmen & Datenstrukturen mit Java
    Antworten: 7
    Letzter Beitrag: 21.05.10, 10:20
  2. Umgang der Daten aus einer Derby Datenbank in einer Visual Web JSF Application
    Von melly_ im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 0
    Letzter Beitrag: 04.03.09, 14:23
  3. dataGridView aus einer Datenbank befüllen
    Von Arco3 im Forum .NET Datenverwaltung
    Antworten: 0
    Letzter Beitrag: 26.02.09, 16:08
  4. Antworten: 2
    Letzter Beitrag: 31.07.07, 14:13
  5. dyn. textfeld aus datenbank (mysql=>php) befüllen
    Von webpagemaster im Forum Flash Plattform
    Antworten: 1
    Letzter Beitrag: 28.08.04, 19:12

Stichworte