Java androidsql创建数据库一次

Java androidsql创建数据库一次,java,android,sql,database,Java,Android,Sql,Database,我想创建一次数据库和所有数据,并在以后需要时更新一些数据。在我阅读的大部分教程中,它们使用两个类:一个扩展SQLiteOpenHelper,另一个简化数据操作。例如: public class EventsData extends SQLiteOpenHelper { private static final String DATABASE_NAME = "events.db"; private static final int DATABASE_VERSION = 1; private st

我想创建一次数据库和所有数据,并在以后需要时更新一些数据。在我阅读的大部分教程中,它们使用两个类:一个扩展SQLiteOpenHelper,另一个简化数据操作。例如:

public class EventsData extends SQLiteOpenHelper {

private static final String DATABASE_NAME = "events.db";
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_CREATE = "CREATE TABLE " + TABLE_NAME + "(" + ID + " INT, " + TITLE + " TEXT, " + UNLOCK + " INT)";
private static final String DATABASE_UPGRADE = "DROP TABLE IF EXISTS " + TABLE_NAME;

public EventsData(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub
    db.execSQL(DATABASE_CREATE);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub
    db.execSQL(DATABASE_UPGRADE);
    onCreate(db);
}
}

}


在我的主要活动中,我创建了DataHelper的一个实例,并调用addEvent()来创建数据并将其添加到数据库中。但每次应用程序启动时,它都会“重置”所有数据,即使我要调用updateEvent()。

您想要什么还不清楚。您希望在创建数据库时只运行一次命令,或者希望更频繁地运行命令。如果您只想在创建时运行它们,而在oncreate中运行它们。如果您想让它们运行其他次数,请将它们放在其他地方。现在我不知道你想做什么,也不知道问题出在哪里。

很不清楚你想要什么。您希望在创建数据库时只运行一次命令,或者希望更频繁地运行命令。如果您只想在创建时运行它们,而在oncreate中运行它们。如果您想让它们运行其他次数,请将它们放在其他地方。现在我不知道您想做什么,也不知道问题出在哪里。

您可以使用DBVersion来控制这种行为

如果要扩展SQLiteOpenHelper,可以在构造函数中传递DBVersion。 代码片段如下所示

private static final int DATABASE_VERSION = 1;
public MyDBHelper(Context context) {
    super(context, DB_NAME, null, DATABASE_VERSION);
}
请参阅属性版本doco

任何必须第一次(仅)执行的代码都需要添加到onCreate()方法中。为了控制随后的数据库更改(如alter table、update table等),应在onUpdate中处理


希望这有帮助

您可以使用DBVersion来控制这种行为

如果要扩展SQLiteOpenHelper,可以在构造函数中传递DBVersion。 代码片段如下所示

private static final int DATABASE_VERSION = 1;
public MyDBHelper(Context context) {
    super(context, DB_NAME, null, DATABASE_VERSION);
}
请参阅属性版本doco

任何必须第一次(仅)执行的代码都需要添加到onCreate()方法中。为了控制随后的数据库更改(如alter table、update table等),应在onUpdate中处理


希望这有帮助

在SQLiteOpenHelper中有两个函数可以重写,它们是onCreate()和onUpgrade()。如果设备上不存在数据库和表,则调用onCreate(),然后为您创建文件。如果将不同的版本号传递给构造函数中的帮助器,则会调用onUpgrade()。如果您只需要对设备上的数据库进行一次重要更改,这将非常有用

private class DatabaseOpenHelper extends SQLiteOpenHelper {

                        public DatabaseOpenHelper(Context context, String name, int version) {
                            super(context, name, null, version);
                        }            

                        @Override
                        public void onCreate(SQLiteDatabase db) {
                            try {
                                //Create tables here
                                db.execSQL("CREATE TABLE " + table_name + args);
                            } catch(SQLException e) {
                                //Database error
                            }
                        }

                        @Override
                        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
                            //This will be called if your database version ever changes
                            this.onCreate(db);
                        }
}

希望这对您有所帮助。

在SQLiteOpenHelper中有两个函数可以重写,它们是onCreate()和onUpgrade()。如果设备上不存在数据库和表,则调用onCreate(),然后为您创建文件。如果将不同的版本号传递给构造函数中的帮助器,则会调用onUpgrade()。如果您只需要对设备上的数据库进行一次重要更改,这将非常有用

private class DatabaseOpenHelper extends SQLiteOpenHelper {

                        public DatabaseOpenHelper(Context context, String name, int version) {
                            super(context, name, null, version);
                        }            

                        @Override
                        public void onCreate(SQLiteDatabase db) {
                            try {
                                //Create tables here
                                db.execSQL("CREATE TABLE " + table_name + args);
                            } catch(SQLException e) {
                                //Database error
                            }
                        }

                        @Override
                        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
                            //This will be called if your database version ever changes
                            this.onCreate(db);
                        }
}

希望这对您有所帮助。

只想创建一次数据库。我想使用我创建的DataHelper类来简化更新数据的过程。只有在未创建数据库的情况下才应该调用databaseHelper的onCreate方法。所以不清楚您的问题是什么。只想创建一次数据库。我想使用我创建的DataHelper类来简化更新数据的过程。只有在未创建数据库的情况下才应该调用databaseHelper的onCreate方法。所以不清楚你的问题是什么。