如何在SQLite中创建表?Android Studio中SQLite建表报错求助
嘿,我来帮你解决这两个问题!
一、SQLite中创建数据表的基本方法
在SQLite里创建数据表核心是用CREATE TABLE语句,步骤和基础语法如下:
- 首先打开你的SQLite数据库(比如命令行下用
sqlite3 student.db就能创建并打开名为student.db的数据库) - 编写
CREATE TABLE语句,基础格式:
CREATE TABLE 表名 ( 列名1 数据类型 [约束条件], 列名2 数据类型 [约束条件], ... );
举个和你需求匹配的实际例子,学生表可以这么写:
CREATE TABLE student_table ( NAME TEXT, EMAIL TEXT, -- 如果需要保证邮箱唯一,可以加UNIQUE约束:EMAIL TEXT UNIQUE PASSWORD TEXT );
如果需要给每个学生设置唯一自增ID,还可以调整为:
CREATE TABLE student_table ( ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, EMAIL TEXT UNIQUE, PASSWORD TEXT );
二、你的Android Studio代码中的SQL错误修复
从你提供的代码和错误提示来看,有两个明显的SQL语法问题,还有一个小的变量拼写错误,我一起帮你修正:
- CREATE TABLE语句缺少空格:原代码里
create table后面直接拼接表名变量,导致生成的SQL是create tablestudent_table(...),SQL引擎无法识别表名,必须在table和表名之间加空格。 - DROP TABLE语句语法错误:
IF EXIST是拼写错误,正确的固定语法是IF EXISTS(末尾多一个S)。 - 变量名拼写错误:
DATABASAE_NAME多写了一个A,改成DATABASE_NAME避免后续数据库名称异常。
修复后的完整代码:
package com.example.thakkar.registration; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DataBaseHelper extends SQLiteOpenHelper { public static final String DATABASE_NAME = "student.db"; public static final String TABLE_NAME = "student_table"; public static final String COL_1 = "NAME"; public static final String COL_2 = "EMAIL"; public static final String COL_3 = "PASSWORD"; public DataBaseHelper(Context context) { super(context, DATABASE_NAME, null, 1); SQLiteDatabase db = this.getWritableDatabase(); } @Override public void onCreate(SQLiteDatabase db) { // 修复:table后加空格,SQL关键字大写提升可读性 db.execSQL("CREATE TABLE " + TABLE_NAME + " (NAME TEXT, EMAIL TEXT, PASSWORD TEXT)"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // 修复:将EXIST改为EXISTS,同时添加空格 db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); onCreate(db); } }
内容的提问来源于stack exchange,提问作者Dhruv Thakkar
相关产品推荐
相关产品推荐

