Announcement

Collapse
No announcement yet.

kleine sql abfrage mit Hürden

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

  • kleine sql abfrage mit Hürden

    Hi @ all

    weil es schnell gehen muss mal hier der code

    Button code
    Code:
    protected void BtnAbfrage_Click(object source, EventArgs e)
     {
         //SqlDataSource1.Update();
         readDB(source, e);
     }
     private void readDB(Object source, EventArgs e)
     {
         OleDbConnection con = new OleDbConnection();
         OleDbCommand cmd = new OleDbCommand();
         OleDbDataReader reader;
         int anzahl;
         con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\AppData\\emarti_DB.mdb";
         cmd.Connection = con;
    
         if (IsPostBack)
         {
             Validate();
             if (!IsValid)
                 return;
    
             try
             {
                 con.Open();
                 
                 cmd.CommandText = "Select from Fragen (Unterthemen, FrageNr, Frage, Antwort_a, Antwort_b, Antwort_c, Antwort_d, Antwort_e, Optionen) values ('" + Themenauswahl.SelectedValue + "','" + TbFrageNr.Text + "','" + TBFrageText.Text + "','" + TBAntwort_A.Text + "','" + TBAntwort_B.Text + "','" + TBAntwort_C.Text + "','" + TBAnwort_D.Text + "','" + TBAntwort_E.Text + "','" + TBOptionen.Text + "')";
    
    
                 Label16.Text = cmd.CommandText;
    
                 anzahl = cmd.ExecuteNonQuery();
                 if (anzahl > 0)
                     Label16.Text = "Es wurde kein entsprechender Datensatz gefunden";
             }
             catch (Exception ex)
             {
                 Label16.Text = ex.Message;
             }
    
             con.Close();
         }
    
         cmd.CommandText = "select * from Fragen";
    
         try
         {
             con.Open();
             reader = cmd.ExecuteReader();
             //grid.DataSource = reader;
             DataBind();
             reader.Close();
         }
         catch (Exception ex)
         {
             Label16.Text = ex.Message;
         }
         con.Close();
    
    
     }
    Wenn ich dann auf den Button klicke erhalte ich folgende Meldung: Die SELECT-Anweisung schließt ein reserviertes Wort oder einen Argumentnamen ein, das/der falsch, mit falscher Zeichensetzung oder überhaupt nicht eingegeben wurde

    Seltsam...

    LG Peter
    Zuletzt editiert von peter071965; 09.11.2012, 16:33.

  • #2
    Einen SQL Syntax in der Form 'Select from Tabelle(Spalten) values (Werte)' gibt es nicht.
    Was soll das? Ich hätte erst mal gedacht es sollte eigentlich eine INSERT sein. Was du aber mit der zurückgegebenen Anzahl machst macht keinen Sinn. Wenn dann am ehesten für ein UPDATE.

    Ich würde dir raten ein vollständige Frage zu stellen. Mit Details darüber was du da warum machst. Ich will nicht raten müssen das du eine ASP.Net Seite mit Zugriff auf eine Access Datenbank schreibst sondern verrate es doch einfach.
    Und bitte formatiere deinen Code. Wenn du bei deinem Beitrag auf bearbeiten klickst steht über dem Editor auch wie das geht.

    Comment


    • #3
      Auch wenn es schnell gehen soll, solltest du ein paar Dinge beachten. Du erwartest schließlich Hilfe und solltest sie uns nicht unnötig erschweren.
      • Code ist als solcher zu markieren. Dafür gibt es vor allem den Button #. Das liest sich erheblich besser, und man versteht leichter, worum es geht.
      • Wenn der SQL-Befehl das Problem sein soll, ist es ziemlich überflüssig, den ganzen anderen Kram zu zitieren.
      • Wichtig wäre also, den SELECT-Befehl als solchen anzuzeigen und als Code zu kennzeichnen. Der ist aber offensichtlich das eigentliche Problem, siehe unten.
      • Es wäre zumindest hilfreich, die Umgebung anzugeben und uns nicht raten lassen: C# unter .NET, Access mit ODBC

      Inhaltlich würde deshalb eines der anderen Unterforen erheblich besser passen als das allgemeine SQL-Forum. (Das mache ich dir aber nicht zum Vorwurf; das ergibt sich erst aus der Lösung des Problems.)

      Das Problem ist der zusammengestoppelte SQL-Befehl. So soll es keinesfalls verwendet werden! Lies dazu [Artikelserie] SQL: Parameter von Befehlen mit folgender Kernaussage:
      Benutze für variable Inhalte eines SQL-Befehls niemals String-Verknüpfung, sondern immer DbParameter!
      Richte dich danach. Entweder der Fehler verschwindet dadurch automatisch, oder er ist sofort zu erkennen. Jürgen

      PS. So kann es gehen, wenn ein Problem unklar beschrieben wird. Mir fällt ein grober Fehler auf, Ralf ein anderer. Zum Aufbau eines SELECT-Befehls siehe die Einführung in SQL.
      Zuletzt editiert von Jürgen Thomas; 09.11.2012, 15:11. Reason: PS

      Comment


      • #4
        Okay Danke für eure Antworten!

        Dann werde ich mein Problemchen mal etwas genauer darstellen.

        Dazu erstmal 2 Bildchen:
        Abfrage.JPG

        Das wären die zwei Felder, wenn der Benutzer nun bei Frage Nr eine Zahl einträgt und bei Unterthema das Thema auswählt, danach auf Abfrage Laden klickt sollen die Werte aus den beiden Feldern abgefragt und verglichen werden.
        Entweder ist der entsprechende Datensatz vorhanden, dann wird er im Bild 2 in allen Relevanten Feldern angezeigt, oder er ist nicht vorhanden demnach wird mir eine Meldung angezeigt ob ich ihn anlegen möchte.

        Felder_Eingabe.JPG

        Dass zu lösen ist mein Problem.

        Die Benennung der Felder in asp ist schon vorhanden.

        Code:
         <asp:Label ID="Label14" runat="server" Font-Bold="True" Font-Names="Arial" Font-Size="12pt" Text="Unterthema"></asp:Label>
        &nbsp;&nbsp;&nbsp;
                        &nbsp;&nbsp;<asp:DropDownList ID="UnterthemaListAbfrage" runat="server" AutoPostBack="True" DataSourceID="AccessDataSource3" DataTextField="Unterthema" DataValueField="Unterthema">
                        </asp:DropDownList>
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                        <asp:Label ID="Label15" runat="server" Font-Bold="True" Font-Names="Arial" Font-Size="12pt" Text="Frage Nr"></asp:Label>
        &nbsp;&nbsp;&nbsp;
                        <asp:TextBox ID="TBFragenrAbfrage" runat="server" Font-Names="Arial" Font-Size="10pt" Height="15px" Width="133px"></asp:TextBox>
        &nbsp;&nbsp;&nbsp;
                        <asp:Button ID="BtnAbfrage" runat="server" BackColor="#00CCFF" Font-Bold="True" Font-Names="Arial" Font-Size="10pt" ForeColor="White" Text="Abfrage Laden" Width="133px" OnClick="BtnAbfrage_Click" style="height: 26px" Height="28px" />
                        <br />
        Also der Inhalt von TBFragenrAbfrage und UnterthemaListAbfrage soll mit den Daten aus der Tabelle verglichen werden.

        Wie geht das?

        Ich greife auf eine Access mdb zu mit ODBC und geschrieben wird das ganze in C#

        LG Peter
        Zuletzt editiert von peter071965; 09.11.2012, 16:08. Reason: Umgebung angegeben

        Comment


        • #5
          Entweder ist der entsprechende Datensatz vorhanden, dann wird er im Bild 2 in allen Relevanten Feldern angezeigt, oder er ist nicht vorhanden demnach wird mir eine Meldung angezeigt ob ich ihn anlegen möchte.
          Das enthält eine Bedingung, die über SELECT beantwortet werden kann, und bei Bedarf eine Maßnahme über INSERT. Aber beides kannst du nicht mischen.

          Unabhängig davon ist es rücksichtslos von dir, wenn fast keine unserer Anmerkungen berücksichtigt wird. Jürgen

          Comment


          • #6
            Hallo,
            Originally posted by peter071965 View Post
            ...Also der Inhalt von TBFragenrAbfrage und UnterthemaListAbfrage soll mit den Daten aus der Tabelle verglichen werden.

            Wie geht das?
            Hast du jetzt Probleme mit der konkreten Umsetzung in C# oder nur mit der korrekten Formulierung der SQL-Statements?

            Gruß Falk
            Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

            Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

            Comment

            Working...
            X