ActiveAndroid Excepción SQLite 'No such table'

Tengo un problema con active-android. Yo en tratar de buscar la ubicación del usuario, el número de pasajeros y la dirección general. Quiero guardar estos en el almacenamiento del teléfono en una tabla llamada "Splits" con activeAndroid. Pero cada vez que llamo el método save() consigo una larga lista de errores. He intentado reinstalar la aplicación, y cambiar mi nombre de base de datos en el manifiesto, pero ninguna de esas soluciones funcionó. Por favor, tenga en cuenta que soy muy nuevo en la programación, por lo que si es posible, actuar como soy 5. Gracias 🙂

Aquí está la salida LogCat

 11-03 23:27:51.094 2905-2905/dk.specialisering.splitcab E/SQLiteLog﹕ (1) no such table: Splits 11-03 23:27:51.115 2905-2905/dk.specialisering.splitcab E/SQLiteDatabase﹕ Error inserting passengers=1 Id=null startLong=9.92773733 direction=North startLat=57.0487396 android.database.sqlite.SQLiteException: no such table: Splits (code 1): , while compiling: INSERT INTO Splits(passengers,Id,startLong,direction,startLat) VALUES (?,?,?,?,?) at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1118) at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:691) at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31) at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1589) at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1461) at com.activeandroid.Model.save(Model.java:153) at dk.specialisering.splitcab.MainActivity.save(MainActivity.java:127) at dk.specialisering.splitcab.MainActivity$1.onClick(MainActivity.java:37) at android.view.View.performClick(View.java:4475) at android.view.View$PerformClick.run(View.java:18786) at android.os.Handler.handleCallback(Handler.java:730) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5419) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) at dalvik.system.NativeStart.main(Native Method) 11-03 23:27:51.175 2905-2905/dk.specialisering.splitcab E/SQLiteLog﹕ (1) no such table: Splits 11-03 23:27:51.175 2905-2905/dk.specialisering.splitcab E/SQLiteDatabase﹕ Error inserting passengers=1 Id=null startLong=9.92773733 direction=North startLat=57.0487396 android.database.sqlite.SQLiteException: no such table: Splits (code 1): , while compiling: INSERT INTO Splits(passengers,Id,startLong,direction,startLat) VALUES (?,?,?,?,?) at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1118) at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:691) at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31) at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1589) at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1461) at com.activeandroid.Model.save(Model.java:153) at dk.specialisering.splitcab.MainActivity.save(MainActivity.java:127) at dk.specialisering.splitcab.MainActivity$1.onClick(MainActivity.java:37) at android.view.View.performClick(View.java:4475) at android.view.View$PerformClick.run(View.java:18786) at android.os.Handler.handleCallback(Handler.java:730) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5419) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) at dalvik.system.NativeStart.main(Native Method) 

Aquí está mi clase de modelo para la tabla

 @Table(name = "Splits") public class Splits extends Model { @Column(name = "startLat") public double startLat; @Column(name = "startLong") public double startLong; @Column(name = "passengers") public int passengers; @Column(name = "direction") public String direction; public Splits() { super(); } public Splits(double startLat, double startLong, int passengers, String direction) { this.startLat = startLat; this.startLong = startLong; this.passengers = passengers; this.direction = direction; } } 

Mi actividad

  package dk.specialisering.splitcab; import android.app.Activity; import android.content.Context; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.media.Image; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import android.widget.ImageButton; import android.widget.Spinner; import android.widget.TextView; import com.activeandroid.ActiveAndroid; import dk.specialiserng.model.Splits; public class MainActivity extends Activity { TextView textLat; TextView textLong; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final ImageButton btn = (ImageButton)findViewById(R.id.imgBtn); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { save(); } }); ActiveAndroid.initialize(this); populateSpinners(); initializeLocation(); } private class myLocationListener implements LocationListener{ @Override public void onLocationChanged(Location location) { if(location != null) { double pLong = location.getLongitude(); double pLat = location.getLatitude(); textLat.setText(Double.toString(pLat)); textLong.setText((Double.toString(pLong))); } } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } } public void populateSpinners() { Spinner passengerSpinner = (Spinner) findViewById(R.id.ddlPassengers); Spinner directionSpinner = (Spinner) findViewById(R.id.ddlDirection); // Create an ArrayAdapter using the string array and a default spinner layout ArrayAdapter<CharSequence> passengerAdapter = ArrayAdapter.createFromResource(this, R.array.noOfPassengers, android.R.layout.simple_spinner_item); ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.splitDirection, android.R.layout.simple_spinner_item); // Specify the layout to use when the list of choices appears passengerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // Apply the adapter to the spinner passengerSpinner.setAdapter(passengerAdapter); directionSpinner.setAdapter(adapter); } public void initializeLocation() { textLat = (TextView) findViewById(R.id.textLat); textLong = (TextView) findViewById(R.id.textLong); LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); LocationListener ll = new myLocationListener(); Location lastLocation = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll); if (lastLocation != null) { textLat.setText(Double.toString(lastLocation.getLatitude())); textLong.setText(Double.toString(lastLocation.getLongitude())); } } public void save() { Spinner pasSpin = (Spinner)findViewById(R.id.ddlPassengers); Spinner dirSpin = (Spinner)findViewById(R.id.ddlDirection); double latitude = Double.parseDouble(textLat.getText().toString()); double longitude = Double.parseDouble(textLong.getText().toString()); int passengers = Integer.parseInt(pasSpin.getSelectedItem().toString()); String direction = dirSpin.getSelectedItem().toString(); Splits splits = new Splits(latitude, longitude, passengers, direction); splits.save(); } } 

Mi diseño

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall" android:text="Your Position in latitude and longitude" android:id="@+id/textView" android:layout_alignParentTop="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:id="@+id/textLat" android:layout_below="@+id/textView" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_alignRight="@+id/textView" android:layout_alignEnd="@+id/textView" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:id="@+id/textLong" android:layout_below="@+id/textLat" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_alignRight="@+id/textLat" android:layout_alignEnd="@+id/textLat" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall" android:text="Number of Splitters in your party" android:id="@+id/textView2" android:layout_below="@+id/textLong" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" /> <Spinner android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/ddlPassengers" android:layout_below="@+id/textView2" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:spinnerMode="dropdown" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall" android:text="The direction you will be going" android:id="@+id/textView3" android:layout_below="@+id/ddlPassengers" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <Spinner android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/ddlDirection" android:layout_below="@+id/textView3" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:spinnerMode="dropdown" /> <ImageButton android:layout_width="200dp" android:layout_height="90dp" android:scaleType="fitCenter" android:id="@+id/imgBtn" android:src="@drawable/gotitbtn" android:background="@android:color/transparent" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" /> </RelativeLayout> 

Espero que alguien pueda ayudar, sé que he publicado un montón, pero estoy desesperado en este momento. Gracias por adelantado

6 Solutions collect form web for “ActiveAndroid Excepción SQLite 'No such table'”

Aunque tarde, espero que esta ayuda.

De la página oficial de ActiveAndroid en github:

"Esto se debe a que ActiveAndroid sólo genera el esquema si no hay un archivo de base de datos existente ." Para regenerar el esquema después de crear un nuevo modelo, la manera más fácil es desinstalar la aplicación del emulador y permitir que sea totalmente re- Esto se debe a que esto borra el archivo de base de datos y activa ActiveAndroid para recrear las tablas basadas en los modelos anotados en el proyecto ".

Incrementa tu AA_DB_VERSION en tu manifiesto. Eso forzará a ActiveAndroid a regenerar su esquema.

Parece que has olvidado llamar a super () en tu clase de modelo en la función constructor:

 public Splits(double startLat, double startLong, int passengers, String direction) { super(); this.startLat = startLat; this.startLong = startLong; this.passengers = passengers; this.direction = direction; } 

Otra posibilidad es que no declaró su clase Model en su archivo Manifest.

Parece que no hay ninguna tabla llamada Splits en tu db. Si ha realizado cambios en su base de datos y está probando su aplicación en un dispositivo real (no emulador), deberá quitar la aplicación del dispositivo (o al menos sus datos) para actualizar su base de datos. Espero que ayude =)

Probablemente has configurado incorrectamente ActiveAndroid. Consulte este tutorial en la sección Preguntas comunes.

Este código de inicialización:

  ActiveAndroid.initialize(this); 

Entra en la clase Application. Así que podría extender la clase de aplicación y utilizar la inicialización dentro de la OnCreate de eso. Me gusta

 public class MyApplication extends Application{ @Override public void onCreate() { super.onCreate(); ActiveAndroid.initialize(this); } } 

Asegúrese de que está utilizando esta clase de aplicación en AndroidManifest.xml como su aplicación. es decir,

 <application android:name="com.exampleapp.MyApplication" ...> 

Consulte: https://github.com/pardom/ActiveAndroid/wiki/Getting-started

  • SQLITE - configuración de la versión de una nueva base de datos
  • SQLiteException cerca de "<" mientras se borra la consulta
  • ¿Cómo unir dos tablas SQLite en mi aplicación de Android?
  • Necesita ejemplo de base de datos SQLite simple
  • IllegalStateException: obtiene la ranura de campo de la fila 0 col -1 falló
  • SQLite incapaz de abrir el archivo de base de datos (código 14) en la consulta "SELECT" frecuente
  • Base de datos SQLite en android y java
  • Android sqlite actualización de fila
  • Acceda a la base de datos en una clase que no sea de actividad
  • SQLite Eliminar Cascade no funciona
  • ¿Cómo puedo repetir el último comando sql ejecutado en la línea de comandos sqlite?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.