2016-11-11 3 views
0

Ich bin auf einem Projekt stecken, brauche Hilfe, um dieses Problem zu lösen.
Ich erhalte die Daten von 3 verschiedenen Eingaben (2 sind Spinner und 1 ist ein TextView).
Der Name der Tabellenspalte lautet: Kundennummer, Mengen- und Produktions-ID.Überprüfen Sie doppelte Daten vor dem Einfügen in eine SQLite-Tabelle

Ich muss Produktions-ID für doppelte Einträge überprüfen, bevor Sie in meine Tabelle einfügen. Hier

ist das, was ich im Moment tun:

if(res.getCount()==0){ 
      boolean isInserted = mytempDB.insertdataintotemptable(
        ProducationSpinner.getSelectedItem().toString(), QuantityText.getText().toString(), 
        CustomerSpinner.getSelectedItem().toString()); 
      if (isInserted == true) 
       Toast.makeText(orderChalan.this, "Data save successfully", Toast.LENGTH_LONG).show(); 
      else 
       Toast.makeText(orderChalan.this, "Data not Inserted", Toast.LENGTH_LONG).show(); 
     } else { 

      while(res.isAfterLast()){ 

       if (res.getString(4).toString() == CustomerSpinner.getSelectedItem().toString()) { 

        boolean isInserted = mytempDB.insertdataintotemptable(ProducationSpinner.getSelectedItem().toString(), 
          QuantityText.getText().toString(), CustomerSpinner.getSelectedItem().toString()); 

        if (isInserted == true) 
         Toast.makeText(orderChalan.this, "Data save successfully", Toast.LENGTH_LONG).show(); 
        else 
         Toast.makeText(orderChalan.this, "Data not Inserted", Toast.LENGTH_LONG).show(); 
       } 
       else { 
        Toast.makeText(orderChalan.this, "Production ID can not different", Toast.LENGTH_LONG).show(); 
       } 
      } 
     } 

ich die erste Zeile auswählen und einen Produktions-ID-Wert erhalten.
Danach versuche ich jedes Mal die Benutzereingaben und Daten aus der Tabelle zu vergleichen, dann füge ich in die Tabelle ein.
Wenn die Daten nicht übereinstimmen, dann zeige ich eine Fehlermeldung "Production Id kann nicht anders" und auch ich überprüfe die erste Zeiteintrag, wenn es keine Daten für die erste Eingabe gibt; In diesem Fall gibt es keine Kontrollen.

Der Fehler, den ich bekomme, ist "Produktions-ID kann nicht anders sein" - ich bekomme diese Nachricht von der 2. Zeiteingabe.

Irgendwelche Vorschläge?

+1

versuchen umzusetzen tun Stachel Vergleich mit .equals () statt ==. Sie könnten dies nützlich finden [Wie kann ich Zeichenfolgen in Java vergleichen?] (Http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – MikeT

Antwort

0

Ich beschreibe die Logik. Was Sie in Ihrem Code tun müssen.

  1. Überprüfen Sie zunächst, ob Ihre Tabelle Daten enthält oder nicht.
  2. Wenn die Tabelle leer ist, fügen Sie Ihre aktuellen Daten in die Tabelle ein.
  3. Wenn die Tabelle nicht leer ist, führen Sie eine Abfrage zum Überprüfen der aktuellen "Produktions-ID" aus, die in der Tabelle verfügbar ist oder nicht. Abfrage "select * from TABLE_NAME WHERE Column_name (Produktion id) Ihre aktuelle Produktion id =.
  4. Wenn Cursor.getCount> 0
    // aktuelle Produktion ID
    sonst
    // existiert aktuelle Angaben in Tabelle einfügen
0

ich glaube, dass das Problem, das Sie beschreiben, gebührt == zur Verwendung von Zeichenfolgen zu vergleichen. == wird testen, ob die String-Objekte/Instanzen gleich sind es nicht die von den Streichern gehaltenen Werte vergleichen.

, dass diese Linie ist

if (res.getString(4).toString() == CustomerSpinner.getSelectedItem().toString()) { 

konsequent false zurück.

Statt == der Verwendung müssen Sie .equals()

So etwas entlang der Linien von

if ((res.getString(4).toString()).equals(CustomerSpinner.getSelectedItem().toString())) { 
Verwandte Themen