我在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(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 );";
答案 0 :(得分:0)
以下是如何创建数据库的示例。首先,您的课程应该从 SQLiteOpenHelper
扩展然后使用super到SQLiteOpenHelper类以及您的数据库名称和版本,
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的更多信息,请阅读this。
请查看以下类型以创建表格:
1.0存储类和数据类型
存储在SQLite数据库中(或由数据库引擎操纵)的每个值都具有以下存储类之一:
NULL。该值为NULL值。
INTEGER。该值是有符号整数,存储为1,2,3,4,6或8个字节,具体取决于值的大小。
REAL。该值是浮点值,存储为8字节IEEE浮点数。
TEXT。该值是一个文本字符串,使用数据库编码(UTF-8,UTF-16BE或UTF-16LE)存储。
BLOB。该值是一个数据块,完全按照输入的方式存储。
有关数据类型的详细信息,请参阅此link。
所以你的表应该像这样创建:
String CREATE_TableName_TABLE = "CREATE TABLE TableNames (Id INTEGER PRIMARY KEY AUTOINCREMENT, TagNo TEXT,
Description TEXT, WeeksGone INTEGER NOT NULL DEFAULT 0 );";