Java SQLite Open Helper创建空数据库
很抱歉,我提出了一个以前有人问过的问题,但我已经阅读了很多回复,试图更改代码来修复它,但我仍然无法为我的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
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主键
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,但它仍然生成了一个空文件我也用您的查询替换了我的查询,但最终的文件仍然是空的,没有创建表