In Datenbank schreiben

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 19 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    In Datenbank schreiben

    Schönen Tag euch! :)

    Ich habe da so eine Frage und ich finde einfach nichts gescheites zu diesem Thema:
    Wie kann ich in C# in eine MySQL Datenbank eintragen? Oder geht das vielleicht auch mit einer phpMyAdmin Datenbank? (Ich weis das phpMyAdmin für PHP gedacht ist :D)

    lG SparxDev

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    jo, ich find Geeorgs Antworten auch ziemlich arrogant. Klar ist das einfach, wenn man weiß, wies geht.

    Allerdings vermute ich, dass dir jede Menge Grundlagen fehlen, und dann ist es keine gute Idee, gleich mit einer Datenbank anfangen zu wollen.
    Imo sollte man, bevor man eine Db ühaupt anfasst, sich mit Datenmodellierung und Databinding vertraut gemacht haben - ja sogar es beherrschen.
    Wie gesagt, ich fürchte, die Begriffe Datenmodellierung und Databinding sagen dir ühaupt nix das wäre dann eine Menge Stoff, nachzuholen.
    Aber es hilft nix: Ohne Datenmodellierung zu können, wirst du ein Datenmodell anlegen, was am Ende nicht aufgeht - dein Projekt ist also zum Scheitern verurteilt.
    Und ohne Databinding zu kennen wirst du grauenhaft veraltete Wurstel-Ansätzen nachrennen, und zwangsläufig grotesk viel und grotesk miserablen Code produzieren, voll von Bugs.

    Aber weiß ich ja nicht wirklich, was du weißt oder nicht - also wie sähe denn dein Datenmodell aus?

    SparxDev schrieb:

    Und wegen dem Datenmodell, ich hoffe das ist so richtig:...
    Nanu - da ist ja nix?
    Also ein Bildle vom Entity-Relation-Modell wär nützlich.
    Aber ich sag gleich: Auf so Schmuddel-Bild-Hoster geh ich nicht, man kann Bilder sehr schön hier mitte Forum-Software anhängen/einfügen an die Posts:

    SparxDev schrieb:

    phpMyAdmin Datenbank

    SparxDev schrieb:

    Unerfahren bin ich bei Datenbanken auf jeden Fall nicht!

    phpMyAdmin ist keine Datenbank ! ;)

    Ich möchte hier mal Geeorg beipflichten, diese Thread stinkt nach NULL Eigeninitiative !
    Bei derartig lapidar verfaßten Fragestellungen, ist eine lapidare Antwort total angemessen !

    SparxDev schrieb:

    ... finde einfach nichts ...

    Ich denke du hast gar nicht gesucht !?
    Ich habe in weniger als 5 Minuten, was zu deinem Problem gefunden !
    Wenn der EDR von Arroganz schreibt ?(

    Aber mal back to topic:
    phpMyAdmin ist keine Datenbank. Auch PHP verbindet sich nicht via phpMyAdmin zur Datenbank, sondern phpMyAdmin ist eine Weboberfläche zur Verwaltung von mySQL Datenbanken. Gibt auch noch z.B. MySQL Workbench, für den MS SQL Server ist es das Management Studio.

    Warum eine einfache Google Suche die Leute überfordert die etwas "mit IT" machen wollen, erschließt sich mir nicht.

    Warum über deine Datenbankmodellierung, von der bei dir nicht die Rede war, angesprochen wird, verstehe ich auch nicht.
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
    ich denke das hängt halt alles zusammen.

    jmd. der nicht googlen will, oder nicht in der lage dazu ist (was ist nicht glauben will), wird vermutlich probleme haben die grundlagen, die bei jeder db anfallen, zu verstehen.
    vllt. wollte edr ja einfach darauf hinweisen, dass "mehr" dahinter steckt.
    von daher ist ja in erster linie mal egal ob es mysql oder sonst ne db ist.

    die nächste frage wäre dann ja wo die db liegt.
    am stehen wieder irgendwelche credentials im quellcode :)
    Gruß Hannes
    Es könnte aber auch sein das der TO oder ein anderer TO eine solche Frage stellt und auf eine bestehende Datanbank zugreifen muss.
    Dann hat der auf das Schema keinen Einfluss.
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
    @hans im glück, @MrTrebron, @Pasta, @Geeorg
    Jungs, ganz ruhig, jeder hat unwissend angefangen, die einen unwissender als die anderen, aber jeder von euch Stand sicherlich mal an diesem Punkt, dass er was machen wollte, und keinen Plan hatte wie, und noch weniger Ahnung davon was er suchen sollte.

    @SparxDev
    Wie schon angedeutet wurde, werden wir nur ungern größere Code-Ausschnitte jemanden einfach so hinwerfen, wie man einem Hund nen Knochen hinwerfen würde. Zeige uns dein Datenmodell wie @ErfinderDesRades es gesagt hat, und zeige uns, was du bisher versucht hast. Dann können wir alle an einer Lösung arbeiten, die "uns, vor allem aber auch dir gefällt.
    @EaranMaleasi Unwissenheit ist die eine Sache, Eigeninitiative die Andere. Deswegen bekommen manche Azubis / Studenten halt ein tolles Übernahmeangebot, andere nicht.

    Generell bin ich immer noch der Meinung das der Zugriff auf die Datenbank nichts mit dem Datenmodell zu tun hat. Von daher @'SparxDev lies dir den MSDN Artikel auf Post #4 durch.

    Hier, klick, ist noch ein Beispiel
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
    Kleines Beispiel DB DIRECT :

    VB.NET-Quellcode

    1. Dim sqlconn As New SqlConnection("Data Source=(DeinDBString)
    2. Dim sqlcmd As New SqlCommand("INSERT INTO DEINTABLE VALUES ('" & TextBox1.Text & "','" & TextBox2.Text & "')", sqlconn)
    3. Try
    4. sqlconn.Open()
    5. sqlcmd.ExecuteNonQuery()
    6. sqlconn.Close()
    7. Catch ex As Exception
    8. MessageBox.Show(ex.ToString)
    9. End Try


    Ich würde dir aber nicht empfehlen die Db direct methode zu benutzen sondern mit Table adapter zu arbeiten, da geht das alles mit viel weniger code.
    Hier könnte meine Signatur stehen.
    Um dem TE jetzt mal seine Frage zu beantworten WIE man unter C# bzw dem .NET Framework allgemein auf Datenbanken zugreift zu beantworten:

    Als erstes einmal musst du dir überlegen, mit welchem Provider du auf deine Datenbank zugreifen willst. Wenn du dich für einen entschieden hast - ich werde das hier einmal exemplarisch mit dem OleDb-Treiber machen - musst du als erstes einmal den entsprechenden Namespace (System.Data.OleDb) einbinden. Dann erstellt du dir mit der OleDbConnection-Klasse (wenn du einen anderen Treiber verwendest - Sql etwa - dann statt OleDbConnection einfach SqlConnection verwenden - eine Verbindung zur Datenbank. Dieser Verbindung übergibst du entweder über den Konstruktor oder über die Property ConnectionString den entsprechenden String (schau mal auf connectinstrings.com vorbei). Im Anschluss machst du die Verbindung auf (rufst auf der Connection die Methode Open auf).
    Jetzt kannst du mit der OleDbCommand-Klasse dir ein Command Objekt erzeugen, welchem du über die CommandText-Property einen ensprechenden Befehl mitgibst (Update, Insert, ....) Wenn das erledigt ist, musst du nur noch das Command ausführen.
    Für lesende Zugriffe (Select) verwendest du eine Schleife, in der du über mit einem Reader, den du dir vorher über <command-Objekt>.ExecuteReader() holst, solange list, solange Datensätze vorhanden sind.
    Für schreibende, "updatende" und/oder löschende Zugriffe verwendest du einfach <command-Objekt>.ExecuteNonQuery().
    Anschließend das Schließen der Datenbank verbindung nicht vergessen :D Verwende dazu einen Using-Block

    An alle die bisher rum gemault haben: Man kann jemanden auch einfach nur mit Worten erklären, wie er ein Problem lösen kann. Dazu muss nicht immer unbedingt auch Code gezeigt werden.
    @SparxDev: Leider kann und werde ich dir keinen fertigen Code posten, da dadurch der Lerneffekt verschwindet (und ich mir damit meine Argumentation zunichte mache ;D ) Ich hoffe du kannst was damit anfangen, ansonsten, würde ich dir empfehlen mal EDR nach seinen Datenbank-Tutorials zu fragen oder selber zu suchen.

    Lg Radinator
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell
    Ich finde es unverschämt das man als total Unerfahren abgestempelt wird, nur weil man nicht weis wie man in C# in eine Datenbank schreibt. Ich bin keineswegs unerfahren! Ich hab einfach nur Datenbanken bis her nur bei PHP gebraucht, nicht bei C#.

    Und an @EaranMaleasi und @Radinator, danke das immer hin ihr es etwas ernster genommen habt, ich habe es mit eurer Hilfe mittlerweile raus. :)

    lG SparxDev
    Hmm - ich find das im Grunde nicht unverschämt. Ist imo sogar eine grosse Hilfe, sich das einzugestehen, wenns denn zutrifft. Unerfahrenheit ist ja nix schlimmes.
    Und ich tät dir empfehlen, dich nicht drüber zu ärgern, wenn jmd. so von dir denkt - jeder kann sich irren, ist ebenfalls nix schlimmes.
    Und was soll zB ich auch denken? Ich frag nach deim Datenmodell, und bekomme keine Antwort.
    Kann doch nur bedeuten, du kannst mit der Frage nichts anfangen - oder gibt es andere Gründe, mich zu ignorieren mit meiner Frage, und welche wären das?



    Ein anderes ist, wie du gemerkt hast springen hier verschiedene Leuts herum, mit manchen kannste gut, mit anderen nicht. Also lass dich von den dir Unsympatischen auf keinen Fall vergraulen. Im besten Fall kannste sogar über Animositäten hinwegsehen, das eröffnet dir die Möglichkeit, auch von Unsympathen inhaltlich was zu lernen (wenn sie denn was beigetragen haben).



    So, und mittlerweile hast du "es" raus. Allerdings für "es" gibts 100 verschiedene Möglichkeiten, und von 100 Beispielen zum Thema Db-Zugriff, die du im INet findest, sind 95 grauenhaft, führen zu grotesk vielem Code und eröffnen die Tür für Sql-Injection ( <- folge dem Link).
    (Diese Masse an schlechten Vorbildern ist ein spezielles Problem, grad bei Fragen zu Db-Zugriffen - in anderen Bereichen gerät man leichter auf tragfähigen Boden)

    Also wenn du weiter lernen willst, könnteste, was du rausgefunden hast, hier auch zur Diskussion stellen. Mag sein es wird verrissen, musste evtl. dickes Fell haben.
    Aber zB den "keine Eigen-Initiative" - Vorverurteilungen (was ich ja in diesem Thread als schlechtes Benimm anspreche, insbes. gegenüber einem Forum-Neuling) wäre damit jeder Boden entzogen.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „ErfinderDesRades“ ()