在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表?的主要内容,如果未能解决你的问题,请参考以下文章

SQLite3-我怎样才能加快这个 SELECT 查询?

提要表 2 和表 1 数据 SQLite Android Studio

(java开发)怎样将Oracle数据库中的数据高速写入sqlite内存数据库中?

Java[MySql]删除无限表中子类

在具有多个表的 sqlite 数据库中删除行不起作用

如何从 DJango 的 SQLite3 中删除表?