SQLite Open Helper创建空的数据库

时间:2019-06-01 16:38:01

标签: java android android-sqlite

很抱歉打开一个之前提出的问题,但是我已经阅读了很多答复,试图更改我的代码以解决此问题,但仍然无法创建SQLite数据库的表。 / p>

我还尝试卸载应用程序并重新安装,删除了要替换的先前数据库文件,并且输出始终相同。

这是我的Open Helper类:

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DataBaseClass extends SQLiteOpenHelper {

    private static final String DATABASE_NAME = "Dados.db";
    private static final int DATABASE_VERSION=1;

    private String primeiraquery = "create table Informacoes (Identificacao VARCHAR(255))";
    Context context;

    public DataBaseClass(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        this.context=context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(primeiraquery);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

更改查询以在表名和()之间添加'或没有空格也产生了相同的输出。

这是MainActivity.class

import android.content.Intent;
import android.database.Cursor;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import com.example.appname.DataBaseClasses.DataBaseClass;

public class MainActivity extends AppCompatActivity {

    DataBaseClass database;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        database=new DataBaseClass(this);
        createBasedados();
    }

    public void createBasedados(){
        database.getReadableDatabase();
    }
}

无论如何,我总是得到4KB的Dados.db,当我打开它时,它是空的,没有创建任何表。

除此之外,数据库文件夹中还包含Dados.db-shm和Dados.db-wal

我还尝试了Codebind的DatabseHelper,但再次,输出始终是相同的,没有表的空文件。

更新(2019-06-01 17:29:24Z):

@CommonWares指出

  

您要复制所有文件,还是仅复制.db文件?您需要所有这些。

我只是复制.db文件。复制所有3个文件之后,现在可以看到数据库表,而不是空文件。

1 个答案:

答案 0 :(得分:-1)

请尝试:

1。也许创建表Informacoes需要ID主键

  1. 将VARCHAR(255)更改为varchar

  2. change DATABASE_VERSION = 1;到DATABASE_VERSION = 2;

    公共类DataBaseClass扩展了SQLiteOpenHelper {

    private static final String DATABASE_NAME = "Dados.db";
    private static final int DATABASE_VERSION=2;
    
    private String primeiraquery = "create table Informacoes (_id integer primary key autoincrement,Identificacao varchar)";
    Context context;
    
    public DataBaseClass(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        this.context=context;
    }
    
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(primeiraquery);
    }
    
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    
    }
    

    }