在java中,我怎样才能删除一个sqlite表?
Posted
技术标签:
【中文标题】在java中,我怎样才能删除一个sqlite表?【英文标题】:In java, how can I delete a sqlite table? 【发布时间】:2011-07-18 20:43:17 【问题描述】:我正在开发安卓应用。我必须在我的活动中开发一个 xml 按钮,并构建我的 sqlite 数据库和表。我怎样才能让用户按下一个按钮来删除一个表?谢谢。
【问题讨论】:
使用DROP TABLE "table_name"
。示例:kodejava.org/examples/117.html
SQLite: efficient way to drop lots of rows的可能重复
【参考方案1】:
如果没有更多上下文很难回答,但最终的 sqlite 查询将是:
db.execSQL("DROP TABLE IF EXISTS table_name");
其中 db 是对 SqliteDatabase 对象的引用。
【讨论】:
非常感谢,但是当我将语句放在下一段时,它仍然不起作用: public void onOpen() Button next3= (Button) findViewById(R.id.Button03) ; next3.setOnClickListener(new View.OnClickListener() SQLiteDatabase db; @Override public void onClick(View view) db.execSQL("DROP TABLE IF EXISTS title"); ); 你仍然需要有一个对数据库的有效引用,你需要先打开它,这里有一个简单的教程reigndesign.com/blog/…。不过,如果您最终想要在这方面做更多事情,您将需要查看 Content Providers。【参考方案2】:您的问题有些模棱两可。请注意,DELETING 表和 DROPPING 表之间存在区别。删除表只会删除其行中的所有数据:
database.delete(TABLE_NAME, null, null);
在此之后,您仍然可以引用该表,因为它仍然存在,但是如果不使用 sql 中的 CREATE TABLE IF NOT EXISTS 表达式,创建一个具有相同名称的新表可能会出现问题。 p>
使用 DROP TABLE 会完全删除该表,除非重新创建,否则无法再次引用它。
正如其他人所指出的,如果您希望将其从数据库中完全删除,这应该可以:
db.execSQL("DROP TABLE IF EXISTS table_Name");
【讨论】:
【参考方案3】:SQLiteDatabase sdb;
sdb=openOrCreateDatabase("dbname.db", Context.MODE_WORLD_WRITEABLE, null);
sdb.execSQL("DROP TABLE IF EXISTS tablename");
【讨论】:
【参考方案4】:作为单例方法
// todo DELETE a special field(s)
public boolean deleteFromTable(int yurtId)
SQLiteDatabase database = dbHelper.getReadableDatabase();
final String whereClause = DBHelper.COLUMN_Y_YURT_ID + " =?";
final String whereArgs[] = String.valueOf(yurtId);
int affectedRows = database.delete(DBHelper.TABLE_NAME_YEMEKCI, whereClause, whereArgs);
return affectedRows > 0;
// todo DELETE all table
public boolean deleteTable()
SQLiteDatabase database = dbHelper.getReadableDatabase();
int affectedRows = database.delete(DBHelper.TABLE_NAME_YEMEKCI, null, null);
return affectedRows > 0;
【讨论】:
以上是关于在java中,我怎样才能删除一个sqlite表?的主要内容,如果未能解决你的问题,请参考以下文章
提要表 2 和表 1 数据 SQLite Android Studio