2017-09-25 45 views
-1

所以,我对此很陌生,我试图实施SugarORM来创建数据库,因为它假设更容易。 我遵循教程的每一步,并将其调整为我想在应用中执行的操作,但每当我尝试将某些内容保存到数据库中时,该应用都会崩溃并返回到之前的活动。 谁能告诉我我做错了什么?我想将5个输入保存到数据库中,并能够通过输入它们的名称(它们也将存储在数据库中)来删除它们。SugarORM不能正常工作

这里是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 

而且我的代码:

@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(); 

     } 
    }); 

} 

}

而且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; 
} 

}

而且清单:

<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> 

回答

0

您的问题是SugarORM找不到表作为你的日志no such table:提及。尝试删除应用程序并重新运行它,或尝试在启动活动中调用sugarDB.onCreate()

1

尝试从改变你的报关行:

public class SugarORM extends SugarRecord 

public class SugarORM extends SugarRecord<SugarORM> 

如果一切都失败了,增加你的版本设置在您的清单

0

的问题是,你不改变AndroidManifest.xml中的数据库版本。每次在代码中更改某些内容(本例中为SugarORM)时,都需要更新Manifest中的版本。否则,它不会更新你的数据库,你会得到这个错误。

改变属性的名称也是一样,那么错误将是:没有这样的列。

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