多个表初始化如何public void onCreate(SQLiteDatabase db)
时间: 2024-03-23 18:36:10 浏览: 93
在 SQLiteOpenHelper 的子类中,onCreate() 方法用于在首次创建数据库时初始化表结构,可以在该方法中创建多个表。具体实现步骤如下:
1. 在 onCreate() 方法中,通过 db 参数获取 SQLiteDatabase 对象。
2. 使用 SQLiteDatabase 对象的 execSQL() 方法执行 SQL 语句创建表。例如,可以使用以下代码创建一个名为 "table1" 的表:
```
String sql = "CREATE TABLE table1 (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)";
db.execSQL(sql);
```
上述代码中,"_id" 列为主键,并自动增长;"name" 和 "age" 列分别为文本和整数类型。
3. 重复执行第 2 步,即可在 onCreate() 方法中创建多个表。
注意事项:
1. 每个表的创建 SQL 语句需要写在不同的 execSQL() 方法中,不能写在同一个方法内。
2. 每个表的创建 SQL 语句中,表名和列名需要按照 SQLite 的命名规范进行命名。
3. 在创建表时,需要注意列的数据类型和约束条件,例如主键、外键、唯一性等。
相关问题
public void onCreate(SQLiteDatabase db) {
这段代码是在继承了SQLiteOpenHelper类后,重写了其onCreate()方法。当数据库第一次被创建时,onCreate()方法会被调用,这是在其中可以执行一些初始化操作,如创建表、插入初始数据等。在这个方法中,参数db是一个可写的SQLite数据库对象,可以使用它执行SQL语句来创建表和插入数据。
package com.example.login; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import androidx.annotation.Nullable; public class Mysql1 extends SQLiteOpenHelper { public Mysql1(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); } @Override public void onCreate(SQLiteDatabase db1){ String sql = "create table loginss(id integer primary key autoincrement,usname text,uspwd text)"; db1.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db1,int oldVersion, int newVersion){ } }
这段代码是一个用于创建 SQLite 数据库的帮助类,其中包含两个方法:
1. `onCreate()` 方法:在数据库首次创建时调用,用于创建数据库表和初始化数据。
2. `onUpgrade()` 方法:在数据库需要升级时调用,用于更新数据库表结构和数据。
具体来说,这段代码会创建一个名为 "loginss" 的表,该表包含三个字段:id、usname 和 uspwd。其中,id 是主键,自增长;usname 和 uspwd 分别用于存储用户的用户名和密码。
如果需要使用该类创建数据库,可按照以下步骤进行:
1. 在需要使用数据库的 Activity 中创建 Mysql1 对象,例如:
```java
Mysql1 mysql1 = new Mysql1(this, "login.db", null, 1);
```
其中,第一个参数为当前 Activity 的上下文对象;第二个参数为数据库名称;第三个参数为游标工厂对象,一般传入 null 即可;第四个参数为数据库版本号,用于管理数据库的升级和降级。
2. 调用 getWritableDatabase() 方法获取可写数据库对象,例如:
```java
SQLiteDatabase db1 = mysql1.getWritableDatabase();
```
注意,如果数据库不存在,则会自动调用 `onCreate()` 方法创建数据库和表;如果数据库已存在,但版本号不一致,则会自动调用 `onUpgrade()` 方法更新数据库表结构和数据。
3. 使用 execSQL() 方法执行 SQL 语句来对数据库进行增、删、改、查等操作,例如:
```java
String sql = "insert into loginss(usname, uspwd) values('admin', '123456')";
db1.execSQL(sql);
```
该代码将向 loginss 表中插入一条用户名为 "admin"、密码为 "123456" 的记录。
当然,为了保证数据安全和代码健壮性,建议在实际使用中使用参数化语句或者 ContentValue 对象来进行数据库操作,而不是直接拼接 SQL 语句。
阅读全文