Brauche Bitte mal hilfe bei SQL Insert



  • Hallo
    Ich komme einfach nicht weiter in meiner testanwendung.
    Ich Schreibe eine db mit Save. Del. New u.s.w.
    das Save + del geht aber Insert für neue ID bekomme ich nicht hin.

    void CHKPV2008Dlg::OnBntNew() 
    {
    int iCurrIndex;	
    
     CUser* pUser = NULL;
     ASSERT(pUser);
       UpdateData();
    
       CString strPrevARTIKELID;
       strPrevARTIKELID = m_strARTIKELID;
    
       CString strPrevARTIKELNAME;
       strPrevARTIKELNAME = m_strARTIKELNAME;
    
       CString strPrevARTIKELGROESSE;
       strPrevARTIKELGROESSE = m_strARTIKELGROESSE;
    
       CString strPrevARTIKELNUMMER;
       strPrevARTIKELNUMMER = m_strARTIKELNUMMER;
    
       CString strPrevARTIKELBESTAND;
       strPrevARTIKELBESTAND.Format("%d",m_iARTIKELBESTAND);
    
       CString strPrevARTIKELSOLL;
       strPrevARTIKELSOLL.Format("%d",m_iARTIKELSOLL);
    
       pUser->m_strARTIKELID = m_strARTIKELID;
       pUser->m_strARTIKELNAME = m_strARTIKELNAME;
       pUser->m_strARTIKELGROESSE = m_strARTIKELGROESSE;
       pUser->m_strARTIKELNUMMER = m_strARTIKELNUMMER;
       pUser->m_iARTIKELSOLL = m_iARTIKELSOLL;
       pUser->m_iARTIKELBESTAND = m_iARTIKELBESTAND;
       InitControls();
    
        UpdateData(FALSE);
    }
    
    BOOL CHKPV2008Dlg::InsertUser(CUser *pUser)
    {
     BOOL bSuccess = FALSE;
     CDatabase db;
    
     try
     {
      if (db.Open("HKPV"))// Datenbank Name 
      {
       CString strSQL;
       strSQL.Format("INSERT HKPV SET sArtikelNAME='%s', sArtikelNUMMER='%s', sArtikelGROESSE='%s', iArtikelSOLL=%d, iArtikelBESTAND=%d WHERE sArtikelID=%s;",
    			pUser->m_strARTIKELNAME, pUser->m_strARTIKELNUMMER, pUser->m_strARTIKELGROESSE,pUser->m_iARTIKELSOLL, pUser->m_iARTIKELBESTAND, pUser->m_strARTIKELID);
    
       db.ExecuteSQL(strSQL);
    
       bSuccess = TRUE;
      }
     }
     catch(CDBException* pe)
     {
      AfxMessageBox(pe->m_strError);			
    
      if (db.IsOpen())
      {
       db.Close();
      }
    
      pe->Delete();
     }
    
     return bSuccess;
    
    }
    

    Wo liegt mein fehler?
    Auch suche ich die Möglichkeit wie man in DB List1 eine alphabetische Sortierung zu bekommen ( ausgabe LIST1)
    danke für Hilfe



  • Dein INSERT Statement ist vollkommener Quatsch.

    INSERT tablename (feld1, feld2, feld3) VALUES (value1, value2, value3)
    

  • Mod

    Zudem eine nette offene Tür für SQL-Injection... Da läuft es mit eiskalt den Rücken runter wenn ich solche Ansätze sehe um SQL Statement zu bauen...



  • Hi
    Hätte ich gewusst wie es geht, müsste ich nicht fragen oder?
    Aber ich habe es schon zum laufen bekommen DANKE EUCH ABER
    mfg cooper



  • Dieses Statement läuft auf MySQL so. Es wird dort akzeptiert.
    Dies ist aber RDBMS abhängig.
    Für alle ist es so gültig wie es hustbaer geschrieben hat.
    Nur zur Erklärung.



  • Unix-Tom schrieb:

    Dieses Statement läuft auf MySQL so. Es wird dort akzeptiert.

    Also das "INSERT x SET a = b, c = d" kann ich mir noch vorstellen, aber was soll der "WHERE e = f" Teil hinten? Was soll der bei einem INSERT bewirken?



  • dann ersetze mal INSERT mit UPDATE und Du weist woher das ganze kommt.



  • @Gast xxx
    Danke das ist mir auch klar 🙄

    Unix-Tom hat aber geschrieben dass MySQL das Statement so akzeptiert, und ich kann mir wirklich nicht vorstellen dass MySQL ein INSERT mit einer WHERE clause akzeptiert.



  • Nein geht auch in MySQL nicht. Das Where habe ich auch übersehen.
    Dachte es kommt hier auf das SET an welchen von MySQl genommen wird.
    Man sollte aber trotzdem beim Standard bleiben.


Log in to reply