首页 > 解决方案 > Android 3.1 SQLite 数据库不创建表并将字段插入到数据库设备探索监视器?

问题描述

我正在尝试通过 android 3.1 创建 SQLite 数据库。但它不能像下面的代码一样工作。请帮忙谢谢。

主要活动.class

public class MainActivity extends AppCompatActivity { DatabaseHelper myDb; 

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myDb = new DatabaseHelper(this);  // this is contact, this is new extension of DatabaseHelper

    } 
} 

DatabaseHelper.class

public class DatabaseHelper extends SQLiteOpenHelper { 
    public static final String DATABASE_NAME = "Iters.db";
    public static final String TABLE_NAME = "iters_table"; //called onCreate method
    public static final String COL_1 = "ID";
    public static final String COL_2 = "NAME";
    public static final String COL_3 = "SURNAME";
    public static final String COL_4 = "MARKS";


    public DatabaseHelper(Context context) {

        super(context, DATABASE_NAME, null, 1);
        SQLiteDatabase db = this.getWritableDatabase(); 
    }

    @Override

    public void onCreate(SQLiteDatabase db) {

        db.execSQL("CREATE TABLE TABLE_NAME (ID INTEGER PRIMARY KEY AUTOINCREMENT," +
                "NAME TEXT," +
                "SURNAME TEXT," +
                "MARKS INTEGER)");

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int i, int i1) {
        db.execSQL("DROP TABLE IF EXISTS " +TABLE_NAME);
        onCreate(db);
    } 
 }

标签: androiddatabasesqlitedevice

解决方案


看来您的问题可能是您正在命名表TABLE_NAME而不是iters_table

您可以使用以下方法纠正此问题:-

db.execSQL("CREATE TABLE " + TABLE_NAME + "(ID INTEGER PRIMARY KEY," +
                "NAME TEXT," +
                "SURNAME TEXT," +
                "MARKS INTEGER)");
  • 请注意,我还删除了AUTOINCREMENT关键字,因为您很可能不需要它(ID 列仍将自动生成 1,然后是 2,然后是 3 等(可能)):-

推荐阅读