SQLiteDatabase表名的疑问

Android 码拜 10年前 (2015-05-10) 958次浏览 0个评论
 

为了操作SQLite数据库,首先继承SQLiteOpenHelper 建立DatabaseHelper类,如下示:

public class DatabaseHelper extends SQLiteOpenHelper
{
        ...
        ...
       @Override
	public void onCreate(SQLiteDatabase db)
	{
		// TODO Auto-generated method stub
		System.out.println("Create a Database.");
		db.execSQL("CREATE TABLE todoItemDB(Id int, Title varchar(50),Content varchar(50))");
	}
        ...
}

其中”CREATE TABLE todoItemDB(Id int, Title varchar(50),Content varchar(50))” 数据表为todoItemDB
然后在主Activity中调用DatabaseHelper对象来操作数据库,如下示:

DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this,"myContent.db3");
SQLiteDatbase db = dbHelper.getReadableDatabase();

其中new DatabaseHelper(MainActivity.this,”myContent.db3″); 数据表表为myContent.db3
查询的时候是用下面的语句:

Cursor cursor = db.rawQuery("select Title from todoItemDB where Id=?", new String[]{num-1+""});

数据表为todoItemDB。
我的问题是“myContent.db3” 与“todoItemDB”是什么关系?是同一个数据表吗?还是说前者是数据表的名字,后者是数据库的名字?不知道我说明白了吗,谢谢!

10分
myContent.db3是数据库,todoItemDB这个是表。
引用 1 楼 zjun109 的回复:

myContent.db3是数据库,todoItemDB这个是表。

奥 谢谢!另外还有个问题,如下:

DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this,"myContent.db3");//是执行完这句语句,建立或打开了myContent.db3数据库吗?
SQLiteDatbase db = dbHelper.getReadableDatabase();//是执行完这句语句,建立或得到todoItemDB数据表吗?
//初次执行这条语句,是不是会执行DatabaseHelper类的onCreate()方法?

30分
首先myContent.db3表示的是一个数据库,数据库里面可以有很多表,他们都是在这个数据库中的,你可以这onCreate()里面去同时创建,然后todoItemDB 是这个库中的一个表。当有两个表在同一个数据库中的时候可以同时查询他们两个,对他们的数据可以交互操作。但是,假如他们不再同一个数据库中,那么他们之间就不能用在同一个数据库的语句当中。然后,你的第二个问题,执行那条的语句其实就是当这个数据库不存在的时候去创建并返回Helper类,存在则返回helper类,然后下面那句就是打开该数据库,使用getReadableDatabase()或者是getWriteableDatabase()都行,区别在于,当你的存储空间已经满的时候应该使用read,不能使用write,所以查询语句中都会使用read的方式来打开数据库。
引用 3 楼 liweijie_chengxuyuan 的回复:

首先myContent.db3表示的是一个数据库,数据库里面可以有很多表,他们都是在这个数据库中的,你可以这onCreate()里面去同时创建,然后todoItemDB 是这个库中的一个表。当有两个表在同一个数据库中的时候可以同时查询他们两个,对他们的数据可以交互操作。但是,假如他们不再同一个数据库中,那么他们之间就不能用在同一个数据库的语句当中。然后,你的第二个问题,执行那条的语句其实就是当这个数据库不存在的时候去创建并返回Helper类,存在则返回helper类,然后下面那句就是打开该数据库,使用getReadableDatabase()或者是getWriteableDatabase()都行,区别在于,当你的存储空间已经满的时候应该使用read,不能使用write,所以查询语句中都会使用read的方式来打开数据库。

谢谢!你回答的很仔细。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明SQLiteDatabase表名的疑问
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!