tutorials.de Buch-Aktion 05/2012
Seite 2 von 2 ErsteErste 12
Like Tree4Danke
ERLEDIGT
JA
ANTWORTEN
23
ZUGRIFFE
1459
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #16
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.504
    Krokev, halte dich bitte an die Regen hier.
    VScan kann sich auch nicht 24h um dich kümmern.
    • Keine Mehrfachposts hintereinander
    • Nicht mehrere gleiche Themen
    • Richtigen Forumsbereich wählen (C# gehört zu .NET)
    • Codetags benutzen, nicht Quote
    • Richtige Codetags benutzen (siehe Signatur)
    • Keine Profilnachrichten oder PNs, um nach Hilfe zu betteln
    • Deutsch
    Danke

    Gruß
     
    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, ...?

  2. #17
    krokev krokev ist offline Mitglied
    Registriert seit
    Oct 2011
    Beiträge
    24
    okay sorry tut mir leid hab mir nichts dabei gedacht und gehofft das ich so schneller hilft bei meinem problem bekommen

    Sorry
     

  3. #18
    Avatar von VScan
    VScan VScan ist offline Mitglied Gold
    Registriert seit
    Dec 2008
    Ort
    Munich
    Beiträge
    131
    Hey, kein Problem, war noch beim Arbeiten


    okay danke das mySQLCmd muss ich aber noch aufrufen damit es ausgegeben wird oder?
    So führst Du die Abfrage aus:

    Code csharp:
    1
    
    DataTable dataTable = DataAccess.ExecuteQuery(mySqlCmd);


    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
    Der Compiler meckert deswegen, weil Du innerhalb der Methode SetConString(string conString) die Variable conString nicht zuweist, sollte dann so aussehen:

    Code csharp:
    1
    2
    3
    4
    
             public static void SetConString(string conString)
            {
                connectionString = conString;
            }


    Danach rufst Du erst die Methode SetConString auf, bevor Du die Abfrage aufrufst, ungefär so:

    Code csharp:
    1
    2
    3
    
             DataAccess.SetConString("SERVER=dautsql02; DATABASE=Visitors.dbo;");
             // Dann weiterer code...
             DataTable dataTable = DataAccess.ExecuteQuery(mySqlCmd);


    Fehlermeldung:
    ArgumntExeption wurde nicht behandelt
    Keyword not supported #dautsql01database#
    Das Problem ist der ConnectionString, der eigentlich (zumindest kenn ich es nicht anders) folgendermaßen aussehen sollte bei einer MySql-Datenbank:

    Code csharp:
    1
    2
    3
    4
    
    string myConnectionString = "SERVER=localhost;" +
                                "DATABASE=mydatabase;" +
                                "UID=user;" +
                                "PASSWORD=mypassword;";


    Es gibt immer kleine Variationsmöglichkeiten bei Datenbanken, das heisst es sind durchaus andere Muster/Parameter im ConnectionString möglich, auch zusätzliche Parameter, wobei Du Dir vielleicht folgende Seite ansehen solltest:

    http://dev.mysql.com/doc/refman/5.6/...als-intro.html


    Viele Grüße
     

  4. #19
    krokev krokev ist offline Mitglied
    Registriert seit
    Oct 2011
    Beiträge
    24
    Sollte das nicht eigentlich auch so funktionieren?
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
     public 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);
            }

    Meine derzeitige Form Klasse:
    Code :
    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
    
    namespace visitor_management_2011
    {
        public partial class Form1 : Form
        {
     
            public Form1()
            {
                InitializeComponent();
                this.Load += new EventHandler(Form1_Load_1);
            }
     
            private void stripmenu_filtern_Click(object sender, EventArgs e)
            {
            }
     
     
            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);
                 */ gehört das da rein****?
                   
                }
     
     
            public void button1_Click(object sender, EventArgs e)
            {
            }
     
            public 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);
            }
    Geändert von krokev (24.10.11 um 18:25 Uhr)
     

  5. #20
    Avatar von VScan
    VScan VScan ist offline Mitglied Gold
    Registriert seit
    Dec 2008
    Ort
    Munich
    Beiträge
    131
    Klar funktioniert das, aber sehr schön ist das nicht gerade!

    Stell Dir vor, dass bei jeder Texteingabe, die Du machst, die Abfrage ausgeführt wird, sehr effektiv ist das nicht, aber zu Testzwecken

    Schau Dir mal folgendes an:

    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
    
    public void button1_Click(object sender, EventArgs e)
    {
         fillMyRichTextBox();
    }
     
    private void fillMyRichTextBox()
    {
         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);
     
         if(dataTable != null)
         {
              for(int index = 0; index < dataTable.Rows.Count; index++)
              {
                    addTextToRichTextBox(dataTable.Rows[index]["last_name"].ToString());
              }
         }
    }
     
     
    private void addTextToRichTextBox(String text)
    {
         RichTextBox1.Text = text + "\r\n" +  RichTextBox1.Text; // \r\n für eine neue Zeile
    }
    Geändert von VScan (24.10.11 um 18:57 Uhr) Grund: ABC
     

  6. #21
    krokev krokev ist offline Mitglied
    Registriert seit
    Oct 2011
    Beiträge
    24
    aha okay danke
    Code :
    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
    
    private void fillMyRichTextBox()
            {
                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);
     
                if (dataTable != null)
                {
                    for (int index = 0; index < dataTable.Rows.Count; index++)
                    {
                        addTextToRichTextBox(dataTable.Rows[index]["last_name"].ToString());
                    }
                }
            }
     
            public void button1_Click(object sender, EventArgs e)
            {
                fillMyRichTextBox(); 
            }
     
     
     
            private void addTextToRichTextBox(String text)
            {
                testtextbox.Text = text + "\r\n" + testtextbox.Text; // \r\n für eine neue Zeile
            }
     
            private void testtextbox(object sender, EventArgs e)
            {
     
            }

    Wen ich das jetzt allerdings so eifüge bekomme ich die Fehlermeldungen:
    1: Der Typ "visitor_management_2011.Form1" enthält bereits eine Definition für "testtextbox".
    2: Mehrdeutigkeit zwischen "visitor_management_2011.Form1.testtextbox" und "visitor_management_2011.Form1.testtextbox(object, System.EventArgs)".

    Ist bestimmpt nur eine Kleinigkeit aber ich komme selber einfach nicht drauf

    LG und danke nochmals
     

  7. #22
    Avatar von VScan
    VScan VScan ist offline Mitglied Gold
    Registriert seit
    Dec 2008
    Ort
    Munich
    Beiträge
    131
    Guten Morgen,

    anstatt der "testtextbox" muss natürlich der Name des RichTextBox-Objekts da rein!

    Den Namen weis ich leider nicht aber ich gehe davon aus, dass es der Standard is und ungefär so lauten müsste: richTextBox1


    Der Compiler meckert natürlich, da Du ein paar Zeilen darunter eine Definition von einer Methode hast, die genauso heisst, inklusive Parameter, das mag er dann nicht, weil ein Methodenaufruf in der Regel anders aussieht als -> testtextbox.Text. (aber es gibt Ausnahmen bei anonymen Methodendeklarationen oder Delegaten) <- Viel Spass beim Nachschlagen!
    Geändert von VScan (25.10.11 um 08:15 Uhr) Grund: ABC
     

  8. #23
    krokev krokev ist offline Mitglied
    Registriert seit
    Oct 2011
    Beiträge
    24
    testtextbox ist der name der Textbox den habe ich geändert also sollte es doch mit diesem funktionieren oder?

    Ein paar Details haben sich gedrade bezüglich meiner Datenbankanbindung geändert und hetz würde ich gerne wissen wo jetz mein Fehler ligt weil ich keine Connetion habe und keine Fehlermeldung (catch) bekommen
    DATAACCESS Klasse neu:

    Code :
    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
    
     class DataAccess
        {
            public static string connectionString;
     
     public static void SetConString(string conString)
            {
                
                    connectionString = "SERVER=DAUTSQL01.fremont.lamrc.net" +
                                        "Database=Visitors" +
                                        "User ID=VisitorDB" + "Password=test";
     
                    connectionString = conString;
            }
    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);
                    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);
                
                try
                {               
                    connection.ConnectionString = connectionString;
                    connection.Open();
                    SqlCommand command = new SqlCommand(sql, connection);
                    return command.ExecuteNonQuery();
                }
                catch (Exception e)
                {
                    Console.WriteLine("Error while trying to connect to database: ");
                    return 1; 
                }
                finally
                {
                    connection.Close();
                }
                 
            }
            
     
            public static bool HasRecords(DataTable datatable)
            {
                return datatable != null && datatable.Rows.Count > 0 ? true : false;
            }

    Aufruf in der Form:
    Code :
    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
    
      public partial class Form1 : Form
        {
     
            public Form1()
            {
                InitializeComponent();
                this.Load += new EventHandler(Form1_Load_1);
            }
     
            private void stripmenu_filtern_Click(object sender, EventArgs e)
            {
            }
     
     
            public void Form1_Load_1(object sender, EventArgs e)
               {
                   try
                   {
                       DataAccess.SetConString("SERVER=DAUTSQL01.fremont.lamrc.net" +
                                            "Database=Visitors" +
                                            "User ID=VisitorDB" + "Password=test");
                       DataAccess.ExecuteQuery("SERVER=DAUTSQL01.fremont.lamrc.net" +
                                            "Database=Visitors" +
                                            "User ID=VisitorDB" + "Password=test");
                       DataAccess.ExecuteNonQuery("SERVER=DAUTSQL01.fremont.lamrc.net" +
                                           "Database=Visitors" +
                                           "User ID=VisitorDB" + "Password=test");
                   }
                   catch
                   {
                       Console.WriteLine("Error while trying to connect to database: ");
                   }
                  
                }
    Geändert von krokev (25.10.11 um 11:08 Uhr)
     

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

    Ein paar Details haben sich gedrade bezüglich meiner Datenbankanbindung geändert und hetz würde ich gerne wissen wo jetz mein Fehler ligt weil ich keine Connetion habe und keine Fehlermeldung (catch) bekommen
    Lösung: Den eventuell entstandenen Fehler ausgeben, sonst kommt immer nur "Error while trying to...";
    Schau Dir bitte den Catch-Block GENAU an, dann fällt Dir auf, dass ich es in meinem Beispiel nicht so gepostet hab.

    Beispiel von krokev:
    Code csharp:
    1
    2
    3
    4
    5
    
                catch (Exception e)
                {
                    Console.WriteLine("Error while trying to connect to database: ");
                    return null;
                }

    Beispiel von VScan:
    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;
                }


    Folgendes kann auch nicht funktionieren:

    Code csharp:
    1
    2
    3
    4
    5
    6
    
    DataAccess.ExecuteQuery("SERVER=DAUTSQL01.fremont.lamrc.net" +
                                            "Database=Visitors" +
                                            "User ID=VisitorDB" + "Password=test");
                       DataAccess.ExecuteNonQuery("SERVER=DAUTSQL01.fremont.lamrc.net" +
                                           "Database=Visitors" +
                                           "User ID=VisitorDB" + "Password=test");

    Grund: Die Methoden ExecuteQuery/ExecuteNonQuery führen Abfragen(Selects) aus, sie setzen nicht den connectionString.
    Geändert von VScan (26.10.11 um 09:32 Uhr) Grund: ABC
     

Ä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