很抱歉打开一个之前提出的问题,但是我已经阅读了很多答复,试图更改我的代码以解决此问题,但仍然无法创建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个文件之后,现在可以看到数据库表,而不是空文件。
答案 0 :(得分:-1)
请尝试:
1。也许创建表Informacoes需要ID主键
将VARCHAR(255)更改为varchar
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) {
}
}