适用于Android的SQL Lite数据库持久存储

时间:2016-11-19 22:25:44

标签: java android sqlite android-sqlite

我对如何在Android Studio中操作SQL Lite数据库感到困惑。我想要的是让用户能够不断添加和搜索数据库中的元素。我遇到的困惑是,似乎关于这个主题的大多数初学者教程都会在每次使用" app"时在MainActivity中创建一个数据库。执行使我相信从头开始创建一个新数据库而不是用新信息更新旧数据库(或单独留下并查询)。例如,在类名DatabaseHelper中我有片段:

 public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CreateTable1String);
        db.execSQL(CreateTable2String);
    }
   ... // Then methods to add, query etc. 

然后是主要的:

    public class MainActivity extends Activity {  

    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
       DatabaseHelper db = new  DatabaseHelper(this); 

... // Then do stuff with the database 

}

对我错误理解的任何见解都非常感激。

1 个答案:

答案 0 :(得分:1)

不,每次运行此代码段时都不会创建数据库。

在您的示例中,运行创建表的SQL脚本的是onCreate方法。但是在发布的代码中没有调用此方法。那不是偶然的。您不会明确地调用此方法,Android会在第一次实例化DatabaseHelper时执行此操作。

在发布的代码中有一个new DatabaseHelper(this);。与您可能假设的相反,这并不意味着会调用onCreate。创建此类的实例并调用onCreate方法是非常不同的。