Java 未创建SQLite表
我在android studio中创建了一个数据库来保存数据。未在数据库中创建该表。我得到的错误是:Java 未创建SQLite表,java,android,Java,Android,我在android studio中创建了一个数据库来保存数据。未在数据库中创建该表。我得到的错误是: 03-04 00:55:45.783 25787-25787/com/SQLiteLog: (1) no such table: TableName 03-04 00:55:45.783 25787-25787/com.E/SQLiteDatabase: Error inserting 我创建表的代码是: @Override public void onCreate(SQLiteDat
03-04 00:55:45.783 25787-25787/com/SQLiteLog: (1) no such table: TableName
03-04 00:55:45.783 25787-25787/com.E/SQLiteDatabase: Error inserting
我创建表的代码是:
@Override
public void onCreate(SQLiteDatabase db) {
db = SQLiteDatabase.openOrCreateDatabase("DB.ad",null);
Log.v(TAG, "*TABLE ");
// create TableName table
db.execSQL(CREATE_TableName_TABLE);
this.checkDataBase();
}
private boolean checkDataBase() {
SQLiteDatabase checkDB = null;
try {
checkDB = SQLiteDatabase.openDatabase(DB_FULL_PATH, null,
SQLiteDatabase.OPEN_READONLY);
checkDB.close();
} catch (SQLiteException e) {
// database doesn't exist yet.
}
return checkDB != null;
}
我想知道是否有人能告诉我为什么会出现这个错误
String CREATE_TableName_TABLE = "CREATE TABLE TableNames( " +
"Id INT( 30 ) PRIMARY KEY AUTOINCREMENT, " +
"TagNo TEXT, " +
"Description TEXT, " +
"WeeksGone INTEGER( 10 ) NOT NULL DEFAULT 0 );";
下面是一个如何创建数据库的示例。首先,您的类应该扩展自SQLiteOpenHelper 然后使用super-to-SQLiteOpenHelper类和您的db名称和版本
public YourClassName(Context context) {
super(context, "YourDatabaseName", null, 1); // 1 is the version of the database, after each change in your db you should ++.
}
然后创建您的表:
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
final String SQL_CREATE_BLABLA_TABLE = "CREATE TABLE " + "TableNameHere" + " (" +
"_id" + " INTEGER PRIMARY KEY," +
"name" + " TEXT NOT NULL);";
sqLiteDatabase.execSQL(SQL_CREATE_BLABLA_TABLE);
}
最后,如果您需要升级数据库版本,因为您所做的任何更改都会覆盖onUpgrade方法,以便再次创建表
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) {
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + "TableNameHere");
onCreate(sqLiteDatabase);
}
有关如何实现SQLite的更多信息,请阅读
请检查以下类型以创建表:
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
final String SQL_CREATE_BLABLA_TABLE = "CREATE TABLE " + "TableNameHere" + " (" +
"_id" + " INTEGER PRIMARY KEY," +
"name" + " TEXT NOT NULL);";
sqLiteDatabase.execSQL(SQL_CREATE_BLABLA_TABLE);
}
1.0存储类和数据类型
存储在SQLite数据库(或由数据库引擎操作)中的每个值都有以下存储类之一:
空。该值为空值
整数。该值是有符号整数,根据值的大小存储在1、2、3、4、6或8字节中
真的。该值是一个浮点值,存储为8字节IEEE浮点数
文本。该值是一个文本字符串,使用数据库编码(UTF-8、UTF-16BE或UTF-16LE)存储
斑点。该值是一组数据,与输入时完全相同
有关数据类型的更多信息,请参见此
因此,表的创建应如下所示:
String CREATE_TableName_TABLE = "CREATE TABLE TableNames (Id INTEGER PRIMARY KEY AUTOINCREMENT, TagNo TEXT,
Description TEXT, WeeksGone INTEGER NOT NULL DEFAULT 0 );";
你正在更新你的数据库版本吗?@JpCrow我该怎么做?我以前从未在安卓系统中使用过数据库。你能发布
CREATE\u TableName\u TABLE
吗?我认为你使用的SQL语句是罪魁祸首。它应该是createtable作为旁注,您应该使用SQLiteOpenHelper
。它为数据库的创建、升级和降级提供了定义良好的生命周期方法。