2016-11-19 45 views
0

我对如何在Android Studio中操作SQL Lite数据库感到困惑。我想要的是让用户能够不断地添加和搜索数据库中的元素。我感到困惑的是,似乎大多数关于此主题的初学者教程将在每次执行“应用程序”时在MainActivity中创建一个数据库,这导致我相信新的数据库是从头开始创建的,而不是用新的数据库更新信息(或单独留言和查询)。例如,在一个类名DatabaseHelper我有段:适用于Android的SQL Lite数据库持久存储器

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

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

在您的示例中,运行创建表的SQL脚本的onCreate方法。但是在发布的代码中没有对此方法的调用。这不是一个意外。你不明确地调用这个方法,Android一次,当DatabaseHelper被第一次实例化时。在发布的代码中有new DatabaseHelper(this);。与您可能认为的相反,这并不意味着将会有一个致电onCreate的电话。创建这个类的实例并调用onCreate方法是非常不同的事情。

相关问题