gpt4 book ai didi

android - 如何在不使使用该数据库的线程出错的情况下删除所有表(但不删除表本身)

转载 作者:太空狗 更新时间:2023-10-29 12:54:09 26 4
gpt4 key购买 nike

我试图让一个菜单按钮在按下时清除我的数据库。据我所知,这很有效。但是,一旦将新信息发送到数据库,应用程序就会强制关闭。我该如何阻止呢?这是清晰的部分:

@Override 
public boolean onMenuItemSelected(int featureId, MenuItem item) {
switch(item.getItemId()) {
case INSERT_ID:
//reset just makes all the variables in the thread reinitialize at base values
mLemonadeMainMenuView.reset();
NotesMade = 0;
mDbHelper.deleteAllNotes();
return true;
}

这里是 deleteallnotes():

public boolean deleteAllNotes() { return mDb.delete(DATABASE_TABLE,"1", null) > 0; }

这里是新的数据信息:

  @Override
public boolean onTouchEvent(MotionEvent event) {
mDbHelper.createNote(event.getX(), event.getY(), 1);
NotesMade ++;
mLemonadeMainMenuView.setCoords(NotesMade);
return true;
}

最后是接收端:

         while(mNotesMade>mNoteId)
{mNoteId++;
Cursor note = mDbHelper.fetchNote(mNoteId);
Float x;
Float y;
Float size;
x = Float.valueOf(note.getString(note.getColumnIndexOrThrow(NotesDbAdapter.KEY_X)));
y= Float.valueOf(note.getString(note.getColumnIndexOrThrow(NotesDbAdapter.KEY_Y)));
size =Float.valueOf(note.getString(note.getColumnIndexOrThrow(NotesDbAdapter.KEY_X)));
canvas.drawCircle(x, y, 1, paint);}
}

注意:除上述方法外,我已经尝试启动和停止线程。

Logcat:12-30 11:51:29.812: E/AndroidRuntime(6311): FATAL EXCEPTION: Thread-10
12-30 11:51:29.812: E/AndroidRuntime(6311): android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
12-30 11:51:29.812: E/AndroidRuntime(6311): at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:214)
12-30 11:51:29.812: E/AndroidRuntime(6311): at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:41)
12-30 11:51:29.812: E/AndroidRuntime(6311): at com.drawing.LemonadeMainMenuView$LemonadeMainMenuThread.doDraw(LemonadeMainMenuView.java:75)
12-30 11:51:29.812: E/AndroidRuntime(6311): at com.drawing.LemonadeMainMenuView$LemonadeMainMenuThread.run(LemonadeMainMenuView.java:52)

编辑:已解决 - 请参阅社区 Wiki 答案。

最佳答案

在 SQL 中,你安排执行:

 DELETE FROM YourTable;

或:

 DELETE FROM YourTable WHERE 1=1;  -- If your DBMS does not like unconstrained deletes

或:

 TRUNCATE TABLE YourTable;

从表面上看,mDb.delete() 方法删除表而不是从表中删除数据。 SQL 将 CREATE 和 DROP 与 INSERT、DELETE 和 UPDATE 分开使用是有原因的。

关于android - 如何在不使使用该数据库的线程出错的情况下删除所有表(但不删除表本身),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8673554/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com