2017-09-25 2 views
-1

Donc, je suis nouveau à cela et j'essaye d'implémenter SugarORM pour créer une base de données parce que c'est supposé être plus facile. J'ai suivi toutes les étapes du tutoriel et je l'ai adapté à ce que je voulais faire dans mon application, mais chaque fois que j'essaie d'enregistrer quelque chose dans la base de données, l'application plante et retourne à l'activité précédente. Quelqu'un peut-il me dire ce que je fais mal? Je veux enregistrer 5 entrées dans la base de données et être capable de supprimer en entrant leur nom (qui sera également stocké dans la base de données).SugarORM ne fonctionne pas

Voici le logcat:

09-25 15:00:29.909 18121-18121/com.example.cabr.teste E/SQLiteLog: (1) 
09-25 15:00:29.911 18121-18121/com.example.cabr.teste E/AndroidRuntime: FATAL EXCEPTION: main 
    Process: com.example.cabr.teste, PID: 18121 
    android.database.sqlite.SQLiteException: no such table: SUGAR_ORM (Sqlite code 1): , 
    while compiling: INSERT OR REPLACE INTO SUGAR_ORM(ID,SIMULT,POTENCIA,QUANTIDADE,EQUIPAMENTO,HORAS) VALUES (?,?,?,?,?,?), 
    (OS error - 2:No such file or directory) 
     at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
     at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:925) 
     at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:536) 
     at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:603) 
     at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:63) 
     at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31) 
     at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1725) 
     at com.orm.SugarRecord.save(SugarRecord.java:266) 
     at com.orm.SugarRecord.save(SugarRecord.java:360) 
     at com.example.cabr.teste.Main14Activity$16.onClick(Main14Activity.java:417) 
     at android.view.View.performClick(View.java:5647) 
     at android.view.View$PerformClick.run(View.java:22465) 
     at android.os.Handler.handleCallback(Handler.java:761) 
     at android.os.Handler.dispatchMessage(Handler.java:98) 
     at android.os.Looper.loop(Looper.java:156) 
     at android.app.ActivityThread.main(ActivityThread.java:6577) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:941) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:831) 
09-25 15:00:29.919 512-893/? E/logserver: imonitor_add_dynamic_path, path:/data/system/dropbox/[email protected] 
09-25 15:00:29.923 1374-11353/? E/ReportTools: This is not beta user build 
09-25 15:00:30.082 1374-11624/? E/HsmCoreServiceImpl: onTransact in code is: 102 
09-25 15:00:30.132 1374-11619/? E/Process: isHighLoadProcess: get cpu failed 
09-25 15:00:30.736 18416-18447/com.example.cabr.teste E/OpenGLRenderer: allen debug liyu Key: 0 
09-25 15:00:30.741 18416-18447/com.example.cabr.teste E/OpenGLRenderer: allen debug liyu Key: 34359738371 
09-25 15:00:30.742 18416-18447/com.example.cabr.teste E/OpenGLRenderer: allen debug liyu Key: 240518168576 
09-25 15:00:30.743 18416-18447/com.example.cabr.teste E/OpenGLRenderer: allen debug liyu Key: 68719476736 
09-25 15:00:30.745 18416-18447/com.example.cabr.teste E/OpenGLRenderer: allen debug liyu Key: 1 

Et mon code:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main14); 

    final TextView textView12 = (TextView) findViewById(R.id.textView12); 

    final Button button1 = (Button) findViewById(R.id.button1); 
    final Button button2 = (Button) findViewById(R.id.button2); 

    final EditText editText1 = (EditText) findViewById(R.id.editText1); 
    final EditText editText2 = (EditText) findViewById(R.id.editText2); 
    final EditText editText3 = (EditText) findViewById(R.id.editText3); 

    final Spinner spinner1 = (Spinner) findViewById(R.id.spinner1); 
    final Spinner spinner2 = (Spinner) findViewById(R.id.spinner2); 

    final CheckBox checkBox1 = (CheckBox) findViewById(R.id.checkbox1); 

    final ImageView imageView1 = (ImageView) findViewById(R.id.imageview1); 
    ImageView imageView2 = (ImageView) findViewById(R.id.imageview2); 
    ImageView imageView3 = (ImageView) findViewById(R.id.imageview3); 
    ImageView imageView4 = (ImageView) findViewById(R.id.imageview4); 
    ImageView imageView5 = (ImageView) findViewById(R.id.imageview5); 
    ImageView imageView6 = (ImageView) findViewById(R.id.imageview6); 
    ImageView imageView7 = (ImageView) findViewById(R.id.imageview7); 
    ImageView imageView8 = (ImageView) findViewById(R.id.imageview8); 
    ImageView imageView9 = (ImageView) findViewById(R.id.imageview9); 
    ImageView imageView10 = (ImageView) findViewById(R.id.imageview10); 
    ImageView imageView11 = (ImageView) findViewById(R.id.imageview11); 
    ImageView imageView12 = (ImageView) findViewById(R.id.imageview12); 
    ImageView imageView13 = (ImageView) findViewById(R.id.imageview13); 
    ImageView imageView14 = (ImageView) findViewById(R.id.imageview14); 
    ImageView imageView15 = (ImageView) findViewById(R.id.imageview15); 
    ImageView imageView16 = (ImageView) findViewById(R.id.imageview16); 

    final TableLayout tableLayout1 = (TableLayout) findViewById(R.id.tablelayout1); 

    final ScrollView scrollView1 = (ScrollView) findViewById(R.id.scrollView); 


    imageView2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      onBackPressed(); 
     } 
    }); 

    imageView3.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent i = new Intent(getApplicationContext(), Main9Activity.class); 
      startActivity(i); 
     } 
    }); 

    imageView4.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      imageView1.setImageResource(R.drawable.televisao2); 
      textView12.setText(getString(R.string.televisor)); 
      tableLayout1.setVisibility(View.VISIBLE); 
      imageView1.setVisibility(View.VISIBLE); 
      textView12.setVisibility(View.VISIBLE); 
      button1.setVisibility(View.VISIBLE); 
      button2.setVisibility(View.GONE); 
      scrollView1.fullScroll(ScrollView.FOCUS_UP); 
      editText1.setText(""); 
      editText2.setText(""); 
      editText3.setText(""); 
     } 
    }); 

    imageView5.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      imageView1.setImageResource(R.drawable.sistemasom2); 
      textView12.setText(getString(R.string.sistemasom)); 
      tableLayout1.setVisibility(View.VISIBLE); 
      imageView1.setVisibility(View.VISIBLE); 
      textView12.setVisibility(View.VISIBLE); 
      button1.setVisibility(View.VISIBLE); 
      scrollView1.fullScroll(ScrollView.FOCUS_UP); 
      editText1.setText(""); 
      editText2.setText(""); 
      editText3.setText(""); 
     } 
    }); 

    imageView6.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      imageView1.setImageResource(R.drawable.leitordedvd2); 
      textView12.setText(getString(R.string.leitordvd)); 
      tableLayout1.setVisibility(View.VISIBLE); 
      imageView1.setVisibility(View.VISIBLE); 
      textView12.setVisibility(View.VISIBLE); 
      button1.setVisibility(View.VISIBLE); 
      button2.setVisibility(View.GONE); 
      scrollView1.fullScroll(ScrollView.FOCUS_UP); 
      editText1.setText(""); 
      editText2.setText(""); 
      editText3.setText(""); 
     } 
    }); 

    imageView7.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      imageView1.setImageResource(R.drawable.consoladejogos2); 
      textView12.setText(getString(R.string.consolajogos)); 
      tableLayout1.setVisibility(View.VISIBLE); 
      imageView1.setVisibility(View.VISIBLE); 
      textView12.setVisibility(View.VISIBLE); 
      button1.setVisibility(View.VISIBLE); 
      button2.setVisibility(View.GONE); 
      scrollView1.fullScroll(ScrollView.FOCUS_UP); 
      editText1.setText(""); 
      editText2.setText(""); 
      editText3.setText(""); 
     } 
    }); 

    imageView8.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      imageView1.setImageResource(R.drawable.aspirador2); 
      textView12.setText(getString(R.string.aspirador)); 
      tableLayout1.setVisibility(View.VISIBLE); 
      imageView1.setVisibility(View.VISIBLE); 
      textView12.setVisibility(View.VISIBLE); 
      button1.setVisibility(View.VISIBLE); 
      button2.setVisibility(View.GONE); 
      scrollView1.fullScroll(ScrollView.FOCUS_UP); 
      editText1.setText(""); 
      editText2.setText(""); 
      editText3.setText(""); 
     } 
    }); 

    imageView9.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      imageView1.setImageResource(R.drawable.arcondicionado2); 
      textView12.setText(getString(R.string.arcondicionado)); 
      tableLayout1.setVisibility(View.VISIBLE); 
      imageView1.setVisibility(View.VISIBLE); 
      textView12.setVisibility(View.VISIBLE); 
      button1.setVisibility(View.VISIBLE); 
      scrollView1.fullScroll(ScrollView.FOCUS_UP); 
      editText1.setText(""); 
      editText2.setText(""); 
      editText3.setText(""); 
     } 
    }); 

    imageView10.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      imageView1.setImageResource(R.drawable.lampada2); 
      textView12.setText(getString(R.string.lampadas)); 
      tableLayout1.setVisibility(View.VISIBLE); 
      imageView1.setVisibility(View.VISIBLE); 
      textView12.setVisibility(View.VISIBLE); 
      button1.setVisibility(View.VISIBLE); 
      button2.setVisibility(View.GONE); 
      scrollView1.fullScroll(ScrollView.FOCUS_UP); 
      editText1.setText(""); 
      editText2.setText(""); 
      editText3.setText(""); 
     } 
    }); 

    imageView11.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      imageView1.setImageResource(R.drawable.computadorportatil2); 
      textView12.setText(getString(R.string.computadorportatil)); 
      tableLayout1.setVisibility(View.VISIBLE); 
      imageView1.setVisibility(View.VISIBLE); 
      textView12.setVisibility(View.VISIBLE); 
      button1.setVisibility(View.VISIBLE); 
      button2.setVisibility(View.GONE); 
      scrollView1.fullScroll(ScrollView.FOCUS_UP); 
      editText1.setText(""); 
      editText2.setText(""); 
      editText3.setText(""); 
     } 
    }); 

    imageView12.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      imageView1.setImageResource(R.drawable.aquecedoraoleo2); 
      textView12.setText(getString(R.string.aquecedoreletr)); 
      tableLayout1.setVisibility(View.VISIBLE); 
      imageView1.setVisibility(View.VISIBLE); 
      textView12.setVisibility(View.VISIBLE); 
      button1.setVisibility(View.VISIBLE); 
      button2.setVisibility(View.GONE); 
      scrollView1.fullScroll(ScrollView.FOCUS_UP); 
      editText1.setText(""); 
      editText2.setText(""); 
      editText3.setText(""); 
     } 
    }); 

    imageView13.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      imageView1.setImageResource(R.drawable.ventoinha2); 
      textView12.setText(getString(R.string.ventoinha)); 
      tableLayout1.setVisibility(View.VISIBLE); 
      imageView1.setVisibility(View.VISIBLE); 
      textView12.setVisibility(View.VISIBLE); 
      button1.setVisibility(View.VISIBLE); 
      button2.setVisibility(View.GONE); 
      scrollView1.fullScroll(ScrollView.FOCUS_UP); 
      editText1.setText(""); 
      editText2.setText(""); 
      editText3.setText(""); 
     } 
    }); 

    imageView14.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      imageView1.setImageResource(R.drawable.desumidificador2); 
      textView12.setText(getString(R.string.desumificador)); 
      tableLayout1.setVisibility(View.VISIBLE); 
      imageView1.setVisibility(View.VISIBLE); 
      textView12.setVisibility(View.VISIBLE); 
      button1.setVisibility(View.VISIBLE); 
      button2.setVisibility(View.GONE); 
      scrollView1.fullScroll(ScrollView.FOCUS_UP); 
      editText1.setText(""); 
      editText2.setText(""); 
      editText3.setText(""); 
     } 
    }); 

    imageView15.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      imageView1.setImageResource(R.drawable.ferroeletrico2); 
      textView12.setText(getString(R.string.ferroeletrico)); 
      tableLayout1.setVisibility(View.VISIBLE); 
      imageView1.setVisibility(View.VISIBLE); 
      textView12.setVisibility(View.VISIBLE); 
      button1.setVisibility(View.VISIBLE); 
      button2.setVisibility(View.GONE); 
      scrollView1.fullScroll(ScrollView.FOCUS_UP); 
      editText1.setText(""); 
      editText2.setText(""); 
      editText3.setText(""); 
     } 
    }); 

    imageView16.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Context context = getApplicationContext(); 
      CharSequence text = "Marque a caixa se utiliza este equipamento em simultâneo com outros equipamentos."; 
      int duration = Toast.LENGTH_LONG; 

      Toast toast = Toast.makeText(context, text, duration); 
      toast.show(); 
     } 
    }); 

    button1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      String equipamento, tipohoras, periodo; 
      Integer potencia, quantidade, simult; 
      Double quanthoras; 
      Double horas = 0.0; 

      button2.setVisibility(View.VISIBLE); 
      button1.setVisibility(View.GONE); 

      equipamento = textView12.getText().toString(); 
      potencia = Integer.parseInt(editText1.getText().toString()); 
      quantidade = Integer.parseInt(editText2.getText().toString()); 
      quanthoras = Double.parseDouble(editText3.getText().toString()); 
      tipohoras = spinner1.getSelectedItem().toString(); 
      periodo = spinner2.getSelectedItem().toString(); 
      simult = 0; 

      if (potencia==0){ 
       if (equipamento.equals("Televisor")){ 
        potencia = 90; 
       } 
       if (equipamento.equals("Sistema de Som")){ 
        potencia = 150; 
       } 
       if (equipamento.equals("Leitor de DVD")){ 
        potencia = 195; 
       } 
       if (equipamento.equals("Consola de Jogos")){ 
        potencia = 140; 
       } 
       if (equipamento.equals("Aspirador")){ 
        potencia = 600; 
       } 
       if (equipamento.equals("Ar Condicionado")){ 
        potencia = 1400; 
       } 
       if (equipamento.equals("Lâmpadas")){ 
        potencia = 10; 
       } 
       if (equipamento.equals("Computador Portátil")){ 
        potencia = 65; 
       } 
       if (equipamento.equals("Aquecedor Elétrico")){ 
        potencia = 1500; 
       } 
       if (equipamento.equals("Ventoinha")){ 
        potencia = 80; 
       } 
       if (equipamento.equals("Desumidificador")){ 
        potencia = 150; 
       } 
       if (equipamento.equals("Ferro Elétrico")){ 
        potencia = 1000; 
       } 
      } 

      if (quanthoras==0){ 
       if (equipamento.equals("Televisor")){ 
        horas = 5.0; 
       } 
       if (equipamento.equals("Sistema de Som")){ 
        horas = 8.0; 
       } 
       if (equipamento.equals("Leitor de DVD")){ 
        horas = 3.0; 
       } 
       if (equipamento.equals("Consola de Jogos")){ 
        horas = 3.0; 
       } 
       if (equipamento.equals("Aspirador")){ 
        horas = 1.04; 
       } 
       if (equipamento.equals("Ar Condicionado")){ 
        horas = 8.0; 
       } 
       if (equipamento.equals("Lâmpadas")){ 
        horas = 5.0; 
       } 
       if (equipamento.equals("Computador Portátil")){ 
        horas = 8.0; 
       } 
       if (equipamento.equals("Aquecedor Elétrico")){ 
        horas = 4.0; 
       } 
       if (equipamento.equals("Ventoinha")){ 
        horas = 6.0; 
       } 
       if (equipamento.equals("Desumidificador")){ 
        horas = 4.0; 
       } 
       if (equipamento.equals("Ferro Elétrico")){ 
        horas = 1.0; 
       } 
      } else { 
       if (periodo.equals("dia")){ 
        if (tipohoras.equals("min")){ 
         horas = quanthoras/60; 
        } 
        if (tipohoras.equals("h")){ 
         horas = quanthoras; 
        } 
       } 

       if (periodo.equals("semana")){ 
        if (tipohoras.equals("min")){ 
         horas = (quanthoras/60)/7; 
        } 
        if (tipohoras.equals("h")){ 
         horas = quanthoras/7; 
        } 
       } 

       if (periodo.equals("mês")){ 
        if (tipohoras.equals("min")){ 
         horas = (quanthoras/60)/30.42; 
        } 
        if (tipohoras.equals("h")){ 
         horas = quanthoras/30.42; 
        } 
       } 
      } 

      SugarORM sugarORM = new SugarORM(equipamento, potencia, quantidade, horas, simult); 
      sugarORM.save(); 

      Toast.makeText(getBaseContext(),"O equipamento foi adicionado com sucesso.", Toast.LENGTH_LONG).show(); 





     } 
    }); 

    button2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      button2.setVisibility(View.GONE); 
      tableLayout1.setVisibility(View.GONE); 
      imageView1.setVisibility(View.GONE); 
      textView12.setVisibility(View.GONE); 

      String equipamento; 
      equipamento = textView12.getText().toString(); 

      SugarORM sugarORM = SugarORM.findById(SugarORM.class, 1); 
      sugarORM.delete(); 


      Toast.makeText(getBaseContext(),"O equipamento foi removido com sucesso.", Toast.LENGTH_LONG).show(); 

     } 
    }); 

} 

}

Et la classe SugarORM:

public class SugarORM extends SugarRecord { 
String equipamento; 
Integer potencia; 
Integer quantidade; 
Double horas; 
Integer simult; 

public SugarORM(){ 

} 

public SugarORM(String equipamento, Integer potencia, Integer quantidade, Double horas, Integer simult){ 
    this.equipamento = equipamento; 
    this.potencia = potencia; 
    this.quantidade = quantidade; 
    this.horas = horas; 
    this.simult = simult; 
} 

}

Et le manifeste:

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:roundIcon="@mipmap/ic_launcher_round" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme.NoActionBar" 
    android:name="com.orm.SugarApp"> 
    <meta-data 
     android:name="DATABASE" 
     android:value="notes.db" /> 
    <meta-data 
     android:name="VERSION" 
     android:value="1" /> 
    <meta-data 
     android:name="QUERY_LOG" 
     android:value="true" /> 
    <meta-data 
     android:name="DOMAIN_PACKAGE_NAME" 
     android:value="com.example.cabr.teste" /> 
    <activity android:name=".Main10Activity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".Main2Activity" /> 
    <activity android:name=".Main3Activity" /> 
    <activity android:name=".Main4Activity" /> 
    <activity android:name=".Main5Activity" /> 
    <activity android:name=".Main6Activity" /> 
    <activity android:name=".Main7Activity" /> 
    <activity android:name=".Main8Activity" /> 
    <activity android:name=".MainActivity" /> 
    <activity android:name=".Main9Activity" /> 
    <activity android:name=".Main11Activity" /> 
    <activity android:name=".Main12Activity" /> 
    <activity android:name=".Main13Activity" /> 
    <activity android:name=".Main14Activity" /> 
    <activity android:name=".Main15Activity" /> 
    <activity android:name=".Main16Activity" /> 
    <activity android:name=".Main17Activity" /> 
    <activity android:name=".Main18Activity" /> 
    <activity android:name=".Main19Activity" /> 
    <activity android:name=".Main20Activity"></activity> 
</application> 

Répondre

0

Votre problème est que SugarORM ne peut pas trouver la table comme mentionné dans votre journal no such table:. Essayez de supprimer l'application et de la réexécuter ou essayez d'appeler le sugarDB.onCreate() lors de l'activité de lancement.

1

Essayez de changer votre ligne de déclaration de:

public class SugarORM extends SugarRecord 

à

public class SugarORM extends SugarRecord<SugarORM> 

Si tout le reste échoue, incrémenter votre paramètre VERSION dans votre manifeste

0

Le problème est que vous ne faites pas le changement la version de votre base de données dans le fichier AndroidManifest.xml. Chaque fois que vous modifiez quelque chose dans votre code (SugarORM dans ce cas), vous devez mettre à jour la version dans votre manifeste. Sinon, il ne mettra pas à jour votre base de données et vous obtiendrez cette erreur.

La même chose vaut pour changer les noms d'attributs, alors l'erreur sera: pas une telle colonne.

<meta-data android:name="VERSION" android:value="2" />