Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.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表_Java_Android - Fatal编程技术网

Java 未创建SQLite表

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

我在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 );";

下面是一个如何创建数据库的示例。首先,您的类应该扩展自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
。它为数据库的创建、升级和降级提供了定义良好的生命周期方法。