Diese Frage ist berühmt, aber jeder sagt immer, gehen Sie zu diesem Notepad Tutorial sehen.wie man die Datenbank in einer Listenansicht Android
Welche hilft, aber es hilft nicht viel, wenn Sie stecken bleiben.
Also ich habe diese Datenbank, die ich auf Android erstellt habe und ich möchte es in einer Listview anzeigen, habe ich das Tutorial, aber ich verstehe immer noch nicht, warum ich kann es funktioniert auf meinem Projekt, so Wenn es jemanden gibt, der helfen kann, dann zeige dich bitte!
hier ist mein Code
public class MyFridge extends ListActivity {
private DBAdapter db;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.notepad_list);
db = new DBAdapter(this);
db.open();
fillData();
}@Override
public boolean onCreateOptionsMenu (Menu menu)
{
super.onCreateOptionsMenu(menu);
CreateMenu(menu);
return true;
}
@Override
public boolean onOptionsItemSelected (MenuItem item)
{
switch(item.getItemId())
{
case 0:
Intent f = new Intent(MyFridge.this, Addform.class);
startActivity(f);
return true;
case 1:
Intent r = new Intent(MyFridge.this, MyRecipes.class);
startActivity(r);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private void CreateMenu(Menu menu)
{
MenuItem mnu1 = menu.add(0, 0, 0, "Add ingredient");
{
mnu1.setAlphabeticShortcut('a');//Change the alphabetic shortcut associated with this item.
mnu1.setIcon(R.drawable.ic_launcher);
}
MenuItem mnu2 = menu.add(0, 1, 1, "Delete ingredient");
{
mnu2.setAlphabeticShortcut('b');//Change the alphabetic shortcut associated with this item.
mnu2.setIcon(R.drawable.ic_launcher);
}
}
private void fillData() {
// Get all of the notes from the database and create the item list
Cursor c = db.getAllCars();
startManagingCursor(c);
String[] from = new String[] { DBAdapter.KEY_TYPE };
int[] to = new int[] { R.id.text1 };
// Now create an array adapter and set it to display using our row
SimpleCursorAdapter notes =
new SimpleCursorAdapter(this, R.layout.notes_row, c, from, to);
setListAdapter(notes);
}
Und hier meine Datenbank ist:
public class DBAdapter {
public static final String KEY_ROWID = "_id";
public static final String KEY_TYPE = "type";
public static final String KEY_WEIGHT = "weight";
public static final String KEY_EXP = "expiration day";
private static final String TAG = "DBAdapter";
private static final String DATABASE_NAME = "MyDB";
private static final String DATABASE_TABLE = "Fridge";
private static final int DATABASE_VERSION = 2;
private static final String DATABASE_CREATE =
"create table Fridge (_id integer primary key autoincrement, "
+ "type text not null, weight integer not null, exp integer not null);";
//CHECK (P_Id>0)
private final Context context;
private DatabaseHelper DBHelper;
private SQLiteDatabase db;
public DBAdapter(Context ctx)
{
this.context = ctx;
//It lets newly created objects understand what has been going on.
//Typically you call it to get information regarding another part of your program
DBHelper = new DatabaseHelper(context);
}
private static class DatabaseHelper extends SQLiteOpenHelper
{
DatabaseHelper(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);//calls the context in the parent class
}
@Override
public void onCreate(SQLiteDatabase db)
{
try {
db.execSQL(DATABASE_CREATE);
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) // this method is used if the OS or the version App is changed
{
Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS cars");
onCreate(db);
}
}
//---opens the database---
public DBAdapter open() throws SQLException
{
db = DBHelper.getWritableDatabase();
return this;
}
//---closes the database---
public void close()
{
DBHelper.close();
}
//---insert a contact into the database---
public long insertCar(String type, int weight, int exp)
{
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_TYPE, type);
initialValues.put(KEY_WEIGHT, weight);
initialValues.put(KEY_EXP, exp);
return db.insert(DATABASE_TABLE, null, initialValues);
}
//---deletes a particular contact---
public boolean deleteCar(long rowId)
{
return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
}
//---retrieves all the contacts---
public Cursor getAllCars()
{
return db.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_TYPE,
KEY_WEIGHT, KEY_EXP}, null, null, null, null, null);
}
/*
* retrieves a particular car
*
*/
public Cursor getCar(String searchString) //throws SQLException
{
Cursor mCursor =
db.query(true, DATABASE_TABLE, new String[] {KEY_ROWID,
KEY_TYPE, KEY_WEIGHT,KEY_EXP},KEY_TYPE +"="+"'"+searchString+"'" +" OR "+ KEY_ROWID + "=" + "'"+searchString +"'"+" OR "+ KEY_EXP + "=" + "'"+searchString +"'"+" OR " + KEY_WEIGHT + "=" + "'" + searchString +"'", null,
null, null, null, null);
return mCursor;
}
//---updates a contact---
public boolean updateCar(long rowId, String type, int weight, int exp)
{
ContentValues args = new ContentValues();
args.put(KEY_TYPE, type);
args.put(KEY_WEIGHT, weight);
args.put(KEY_EXP, exp);
return db.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0;
}
}
Logcat Informationen.
04-09 18:14:47.128: D/TextLayoutCache(23297): Using debug level: 0 - Debug Enabled: 0
04-09 18:14:47.173: D/CLIPBOARD(23297): Hide Clipboard dialog at Starting input: finished by someone else... !
04-09 18:14:49.113: I/SqliteDatabaseCpp(23297): sqlite returned: error code = 1, msg = no such table: Fridge, db=xxx
04-09 18:14:49.113: D/AndroidRuntime(23297): Shutting down VM
04-09 18:14:49.118: W/dalvikvm(23297): threadid=1: thread exiting with uncaught exception (group=0x40c281f8)
04-09 18:14:49.123: E/AndroidRuntime(23297): FATAL EXCEPTION: main
04-09 18:14:49.123: E/AndroidRuntime(23297): java.lang.RuntimeException: Unable to start activity ComponentInfo{wijayaratnam.sutharsun.mobilefridge/wijayaratnam.sutharsun.mobilefridge.MyFridge}: android.database.sqlite.SQLiteException: no such table: Fridge: , while compiling: SELECT _id, type, weight, expiration day FROM Fridge
04-09 18:14:49.123: E/AndroidRuntime(23297): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1968)
04-09 18:14:49.123: E/AndroidRuntime(23297): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1993)
04-09 18:14:49.123: E/AndroidRuntime(23297): at android.app.ActivityThread.access$600(ActivityThread.java:127)
04-09 18:14:49.123: E/AndroidRuntime(23297): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1159)
04-09 18:14:49.123: E/AndroidRuntime(23297): at android.os.Handler.dispatchMessage(Handler.java:99)
04-09 18:14:49.123: E/AndroidRuntime(23297): at android.os.Looper.loop(Looper.java:137)
04-09 18:14:49.123: E/AndroidRuntime(23297): at android.app.ActivityThread.main(ActivityThread.java:4507)
04-09 18:14:49.123: E/AndroidRuntime(23297): at java.lang.reflect.Method.invokeNative(Native Method)
04-09 18:14:49.123: E/AndroidRuntime(23297): at java.lang.reflect.Method.invoke(Method.java:511)
04-09 18:14:49.123: E/AndroidRuntime(23297): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
04-09 18:14:49.123: E/AndroidRuntime(23297): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
04-09 18:14:49.123: E/AndroidRuntime(23297): at dalvik.system.NativeStart.main(Native Method)
04-09 18:14:49.123: E/AndroidRuntime(23297): Caused by: android.database.sqlite.SQLiteException: no such table: Fridge: , while compiling: SELECT _id, type, weight, expiration day FROM Fridge
04-09 18:14:49.123: E/AndroidRuntime(23297): at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
04-09 18:14:49.123: E/AndroidRuntime(23297): at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:68)
04-09 18:14:49.123: E/AndroidRuntime(23297): at android.database.sqlite.SQLiteProgram.compileSql(SQLiteProgram.java:143)
04-09 18:14:49.123: E/AndroidRuntime(23297): at android.database.sqlite.SQLiteProgram.compileAndbindAllArgs(SQLiteProgram.java:361)
04-09 18:14:49.123: E/AndroidRuntime(23297): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:127)
04-09 18:14:49.123: E/AndroidRuntime(23297): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:94)
04-09 18:14:49.123: E/AndroidRuntime(23297): at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:53)
04-09 18:14:49.123: E/AndroidRuntime(23297): at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47)
04-09 18:14:49.123: E/AndroidRuntime(23297): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1690)
04-09 18:14:49.123: E/AndroidRuntime(23297): at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1575)
04-09 18:14:49.123: E/AndroidRuntime(23297): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1531)
04-09 18:14:49.123: E/AndroidRuntime(23297): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1611)
04-09 18:14:49.123: E/AndroidRuntime(23297): at wijayaratnam.sutharsun.mobilefridge.DBAdapter.getAllCars(DBAdapter.java:101)
04-09 18:14:49.123: E/AndroidRuntime(23297): at wijayaratnam.sutharsun.mobilefridge.MyFridge.fillData(MyFridge.java:146)
04-09 18:14:49.123: E/AndroidRuntime(23297): at wijayaratnam.sutharsun.mobilefridge.MyFridge.onCreate(MyFridge.java:29)
04-09 18:14:49.123: E/AndroidRuntime(23297): at android.app.Activity.performCreate(Activity.java:4465)
04-09 18:14:49.123: E/AndroidRuntime(23297): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1052)
04-09 18:14:49.123: E/AndroidRuntime(23297): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1932)
04-09 18:14:49.123: E/AndroidRuntime(23297): ... 11 more
Was ist der Fehler, den Sie erhalten? – Sam
gut nichts, da es sofort abstürzt – user1322287
W/dalvikvm (22667): threadid = 1: Thread mit nicht abgefangener Ausnahme beenden (Gruppe = 0x40c281f8) – user1322287