gpt4 book ai didi

java - 删除数据库中的所有表后,如何在数据库中创建表?

转载 作者:行者123 更新时间:2023-12-01 22:41:51 25 4
gpt4 key购买 nike

我通过此查询在 DB 中看到我的表,..

(SELECT name
FROM sqlite_master
WHERE type ='table' AND name NOT LIKE 'sqlite_%';)

之后(删除 allmytable)我无法创建表格,...

package com.ariaz.amirmkaa.litner002;

import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseManager extends SQLiteOpenHelper {

public DatabaseManager(Context context)
{
super(context, "myDB", null, 1);
}

@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub

String card_tbl = "CREATE TABLE \"cards_tbl\" (\n" +
"\t\"id\"\tINTEGER NOT NULL,\n" +
"\t\"questiontx\"\tTEXT NOT NULL,\n" +
"\t\"questionpic\"\tBLOB,\n" +
"\t\"solutiontx\"\tTEXT NOT NULL,\n" +
"\t\"solutionpic\"\tBLOB,\n" +
"\t\"days\"\tINTEGER NOT NULL,\n" +
"\t\"bookid\"\tINTEGER NOT NULL,\n" +
"\t FOREIGN KEY (bookid)\n" +
" REFERENCES book_tbl (bookid)\n" +
");";

db.execSQL(card_tbl);
}

最佳答案

我认为您的问题是 onCreate 方法仅在首次创建数据库时运行(即如果数据库文件不存在),只要数据库存在,它就不会运行。

删除从 sqlite_master 中提取的所有表不会删除数据库,数据库至少会有 sqlite_master 表,该表无法删除,因为它受到保护。

当您删除所有表时,您可以调用onCreate方法。

  • 通常在开发时,更改应用的架构后,您可以删除应用的数据或卸载应用,这将导致数据库被删除,从而运行 onCreate 方法。在发布应用程序后进行此类更改时,您通常会利用数据库版本(在 super(context, "myDB", null, 1); 中传递的第四个参数)以及适当的迁移代码opUpdate 方法。

关于java - 删除数据库中的所有表后,如何在数据库中创建表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58489947/

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