Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SQLite Open Helper创建空数据库_Java_Android_Android Sqlite - Fatal编程技术网

Java SQLite Open Helper创建空数据库

Java SQLite Open Helper创建空数据库,java,android,android-sqlite,Java,Android,Android Sqlite,很抱歉,我提出了一个以前有人问过的问题,但我已经阅读了很多回复,试图更改代码来修复它,但我仍然无法为我的SQLite数据库创建表 我还尝试卸载应用程序并重新安装,删除了以前要替换的数据库文件,并且输出总是相同的 这是我的Open Helper类: import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper

很抱歉,我提出了一个以前有人问过的问题,但我已经阅读了很多回复,试图更改代码来修复它,但我仍然无法为我的SQLite数据库创建表

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

这是我的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,当我打开它时,它是空的,没有创建任何表

除此之外,databases文件夹还有Dados.db-shm和Dados.db-wal

我还尝试了Codebind中的datasehelper,但是输出总是相同的,没有表的空文件

更新():

@Commonware指出

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

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

请尝试以下操作:

1.可能创建表信息需要id主键

  • 将VARCHAR(255)更改为VARCHAR

  • 更改数据库_版本=1;到数据库_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) {
    
    }
    
    }


  • “当我打开它时”--你是怎么做的?@Commonware我正在使用DB Browser for SQLite,但我也使用了在线SQLite浏览器,文件在两个位置都是空的,切换到
    getWriteableDatabase()
    ,看看你是否有不同的行为。@Commonware相同的行为,不幸的是,您正在使用SQLite的DB Browser打开哪个数据库?您从设备中提取它吗?这是有效的SQL查询。我相信VARCHAR要求我指定大小,并且这个表特别不需要id,因为它只有一行。。。我确实将版本更改为2,但它仍然生成了一个空文件我也用您的查询替换了我的查询,但最终的文件仍然是空的,没有创建表