我的应用程序有两个按钮,第一个按钮用于删除用户输入的记录,第二个按钮用于删除所有记录.但是,当我想删除数据时,它会显示消息
"您的应用程序已被强制停止".
请检查我的代码并给我一些建议.
public void deleteAll()
{
//SQLiteDatabase db = this.getWritableDatabase();
// db.delete(TABLE_NAME,null,null);
//db.execSQL("delete * from"+ TABLE_NAME);
db.execSQL("TRUNCATE table" + TABLE_NAME);
db.close();
}
Run Code Online (Sandbox Code Playgroud)
和
public void delete(String id)
{
String[] args={id};
getWritableDatabase().delete("texts", "_ID=?", args);
}
Run Code Online (Sandbox Code Playgroud)
但它显示以下Log cat错误.
03-07 15:57:07.143: ERROR/AndroidRuntime(287): Uncaught handler: thread main exiting due to uncaught exception
03-07 15:57:07.153: ERROR/AndroidRuntime(287): java.lang.NullPointerException
03-07 15:57:07.153: ERROR/AndroidRuntime(287): at com.example.MySQLiteHelper.delete(MySQLiteHelper.java:163)
03-07 15:57:07.153: ERROR/AndroidRuntime(287): at com.example.Settings$4.onClick(Settings.java:94)
-07 15:57:07.153: ERROR/AndroidRuntime(287): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:158)
03-07 15:57:07.153: ERROR/AndroidRuntime(287): at android.os.Handler.dispatchMessage(Handler.java:99)
03-07 15:57:07.153: ERROR/AndroidRuntime(287): at android.os.Looper.loop(Looper.java:123)
03-07 15:57:07.153: ERROR/AndroidRuntime(287): at android.app.ActivityThread.main(ActivityThread.java:4203)
03-07 15:57:07.153: ERROR/AndroidRuntime(287): at java.lang.reflect.Method.invokeNative(Native Method)
03-07 15:57:07.153: ERROR/AndroidRuntime(287): at java.lang.reflect.Method.invoke(Method.java:521)
03-07 15:57:07.153: ERROR/AndroidRuntime(287): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
03-07 15:57:07.153: ERROR/AndroidRuntime(287): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
03-07 15:57:07.153: ERROR/AndroidRuntime(287): at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
vip*_*zer 331
你错过了一个空间: db.execSQL("delete * from " + TABLE_NAME);
也没有必要甚至包括*
,正确的查询是:
db.execSQL("delete from "+ TABLE_NAME);
Run Code Online (Sandbox Code Playgroud)
Pao*_*o M 162
db.delete(TABLE_NAME, null, null);
Run Code Online (Sandbox Code Playgroud)
或者,如果您希望函数返回已删除行的计数,
db.delete(TABLE_NAME, "1", null);
Run Code Online (Sandbox Code Playgroud)
从SQLiteDatabase的文档删除方法:
删除所有行并获取计数传递"1"作为whereClause.
Ita*_*dev 26
SQLite不支持TRUNCATE命令.您应该使用您在上一行中尝试过的内容:
DELETE FROM `TABLE_NAME`;
Run Code Online (Sandbox Code Playgroud)
PS您可以通过对给定数据库的所有查询使用相同的数据库连接实例来优化程序,而不是为每个查询创建新的查询.
小智 19
没有必要使用"执行"功能.以下代码适用于我:::
db.delete(TABLE_NAME,null,null);
db.close();
Run Code Online (Sandbox Code Playgroud)
SQLiteDatabase db = this.getWritableDatabase();
db.execSQL("DELETE FROM tablename"); //delete all rows in a table
db.close();
Run Code Online (Sandbox Code Playgroud)
这项工作对我来说:)
小智 5
尝试此代码删除表中的所有数据..
String selectQuery = "DELETE FROM table_name ";
Cursor cursor = data1.getReadableDatabase().rawQuery(selectQuery, null);
Run Code Online (Sandbox Code Playgroud)
小智 5
使用带有最后两个空参数的 Sqlit 删除函数。
db.delete(TABLE_NAME,null,null)
Run Code Online (Sandbox Code Playgroud)
写吧
SQLiteDatabase db = this.getWritableDatabase();
db.execSQL("delete from "+TableName);
Run Code Online (Sandbox Code Playgroud)
或者
db.delete(tablename,null,null);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
290201 次 |
最近记录: |