Announcement

Collapse
No announcement yet.

INSERT INTO - Keine Daten in Access!

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • INSERT INTO - Keine Daten in Access!

    verwendetes Datenbanksystem: <ADO.NET - OLEDB>

    Hallo!!!

    Ich versuche gerade ein paar Daten in eine Access Datenbank hineinzuspeichern, es funktioniert alles und bekomme beim kompilieren keine Fehlermeldung, jedoch werden die Daten nicht in die Access Datenbank gespeichert

    Hier der Quelltext

    Code:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.OleDb;
    
    namespace tupper
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                db();
            }
    
            public void db()
            {
                try
                {
                    OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Users\\Strasser Stefan\\Desktop\\tupper.mdb");
                    con.Open();
                    string query = "SELECT * FROM tupper";
                    OleDbCommand com = new OleDbCommand(query, con);
                    OleDbDataReader reader = com.ExecuteReader();
                    while (reader.Read())
                    {
                        cmdUmsatz.Text = "Aktueller Umsatz: " + reader["preis"].ToString() + " €";
                    }
                    reader.Close();
                    con.Close();
                }
    
                catch (Exception e)
                {
                    string s = e.Message;
                }
            }
            private void button1_Click(object sender, EventArgs e)
            {
                string product = name.Text;
                string price = cmdPrice.Text;
                string menge = cmdMenge.Text;
                string customer = cmdCustomer.Text;
                double preisnew = Convert.ToDouble(price);
                double mengenew = Convert.ToDouble(menge);
                double preisfertig = preisnew * mengenew;
                string preisganzfertig = Convert.ToString(preisfertig);
                string mengeganzfertig = Convert.ToString(mengenew);
                OleDbConnection newcon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Users\\Strasser Stefan\\Desktop\\tupper.mdb");
                string insertquery = "INSERT INTO tupper(produktname, preis, menge, customer) VALUES (product, preisganzfertig, mengeganzfertig, customer)";
                OleDbCommand command = new OleDbCommand(insertquery);
                command.Connection = newcon;
                newcon.Open();
                newcon.Close();
                Ausgabe.Text = "Produkt: " + product + " Preis: " + preisfertig + " Menge: " + menge + " Käufer: " + customer + "";
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                db();
            }
        }
    }
    lg steve46

  • #2
    Du solltest dein command auch ausführen und nicht einfach nur die Connection öffnen und schließen.

    Edit: 2.tens solltest du auch Werte in den Values Teil des Inserts schreiben und keine Spaltennamen die deine Tabelle nicht hat.

    Comment


    • #3
      Ich habe zwischen con.Open(); und con.Close(); ein command.ExecuteNonQuery(); hinzugefügt, aber das änder nichts!

      Comment


      • #4
        Da dein Insert Kommando ungültig ist solltest du eine Exception bekommen haben.

        Comment


        • #5
          Wenn man ein try/catch verwendet und die abgefangene Fehlermeldung dann aber nicht anzeigt ...

          bye,
          Helmut

          Comment


          • #6
            Warum ist es ungütlig?

            Ich stehe unter Zeitdruch ich bräuchte schnell eine Lösung!

            Er gibt keinen Fehler mehr bei der INSERT INTO Anweisung aus, aber dafür schreibt er jetzt:

            Datentyüen in Kritierenausdruck unverträglich. Das schreibt er bei command.ExecuteNoneQuery();
            Zuletzt editiert von steve46; 20.10.2011, 19:31.

            Comment


            • #7
              Du hast in values einfach deine Variablennamen hingeschrieben. So werden die maximal (wenn überhaupt) als Spalten interpretiert.

              Sie dir mal hier an wie man mit Parametern in ADO.Net umgeht.



              Ich stehe unter Zeitdruch ich bräuchte schnell eine Lösung!
              Wie haben Zeit

              Comment


              • #8
                Ich kenn mich grad nicht mehr aus!

                Diese Zeile habe ich hinzugefügt:

                command.Parameters.AddWithValue("@produktname", product);

                Compiler meldet nichts => Daten werden noch immer nicht gespeichert!!!

                Comment


                • #9
                  Zeig mal den ganzen Codeblock (vom Erzeugen der Connection bis zum schließen)

                  Comment


                  • #10
                    Code:
                     OleDbConnection newcon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Users\\Strasser Stefan\\Desktop\\tupper.mdb");
                                string insertquery = "INSERT INTO tupper(produktname, preis, menge, customer) VALUES ('product', 'preisganzfertig', 'mengeganzfertig', 'customer')";
                                OleDbCommand command = new OleDbCommand(insertquery);
                                command.Parameters.AddWithValue("@produktname", product);
                                command.Connection = newcon;
                                newcon.Open();
                                newcon.Close();
                                Ausgabe.Text = "Produkt: " + product + " Preis: " + preisfertig + " Menge: " + menge + " Käufer: " + customer + "";

                    Comment


                    • #11
                      Du hast jetzt aus den Spalten im Values Block string Literale gemacht das hilft genauso wenig.

                      Du hast einen Parameter @produktname erstellt. Denn solltest du an der richtigen Stelle da wo du den entsprechenden Wert haben willst in deinem INSERT Statement erwähnen.

                      Comment


                      • #12
                        Ich muss beim INSERT Statement bei produktname ein @ schreiben?

                        Comment


                        • #13
                          [Highlight=C#]string insertquery = "INSERT INTO tupper(produktname, preis, menge, customer) VALUES (@produktname, @NochEinParameter, @UndNochEiner, @UndSoWeiter)";
                          [/Highlight]

                          Ich habe das notwendige verlinkt. Nimm dir die Zeit das zu lesen!

                          Comment


                          • #14
                            Code:
                                  OleDbConnection newcon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Users\\Strasser Stefan\\Desktop\\tupper.mdb");
                                        string insertquery = "INSERT INTO tupper(produktname, preis, menge, customer) VALUES (@produktname, @preis, @menge, @customer)";
                                        OleDbCommand command = new OleDbCommand(insertquery);
                                        command.Connection = newcon;
                                        newcon.Open();
                                        command.Parameters.AddWithValue("@produktname", product);
                                        command.Parameters.AddWithValue("@preis", preisganzfertig);
                                        command.Parameters.AddWithValue("@menge", mengeganzfertig);
                                        command.Parameters.AddWithValue("@customer", customer);
                                        newcon.Close();
                                        Ausgabe.Text = "Produkt: " + product + " Preis: " + preisfertig + " Menge: " + menge + " Käufer: " + customer + "";
                            Gespeichert werden die Daten immer noch nicht!

                            Comment


                            • #15
                              Wo wird das command ausgeführt? Hab nur ich ein Deja-Vu?

                              Comment

                              Working...
                              X