Java Android Sqlite没有显示这样的表

Java Android Sqlite没有显示这样的表,java,android,sqlite,Java,Android,Sqlite,我想向数据库中添加一些图像uri。我的数据库表有两列id和字符串Uri。问题是,在尝试向表中插入一些URI时,它显示不存在这样的表。这是我的数据库适配器类代码 package com.example.mystorage; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException

我想向数据库中添加一些图像uri。我的数据库表有两列id和字符串Uri。问题是,在尝试向表中插入一些URI时,它显示不存在这样的表。这是我的数据库适配器类代码

package com.example.mystorage;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DBAdapter {
// for customer registration
static final String KEY_ID = "id";
static final String KEY_URI = "uri";


static final String DATABASE_NAME = "IMAGE_DB";

static final String DATABASE_TABLE = "temp_images1";

static final int DATABASE_VERSION = 2;

static final String DATABASE_CREATE = "create table temp_images1 (id integer       autoincrement, "
        + "uri text not null);";

final Context context;
DatabaseHelper DBHelper;
SQLiteDatabase db;

public DBAdapter(Context ctx) {
    this.context = ctx;
    DBHelper = new DatabaseHelper(context);
}

private static class DatabaseHelper extends SQLiteOpenHelper {
    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);

    }

    public void onCreate(SQLiteDatabase db) {
        try {
            db.execSQL(DATABASE_CREATE);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)     {
        db.execSQL("DROP TABLE IF EXISTS temp_images1");
        onCreate(db);
    }

}

public DBAdapter open() throws SQLException {
    db = DBHelper.getWritableDatabase();
    return this;
}

public void close() {
    DBHelper.close();
}



// //////////////////////////////////////for
// customerRegistration////////////////
// customer registration for retrieve data
public Cursor getAllImages() {
    return db.query(DATABASE_TABLE, new String[] {KEY_URI}, null,
            null, null, null, null);
}
public Cursor getContentimage(long id) throws SQLException {
    Cursor c = db.query(true, DATABASE_TABLE,
            new String[] { KEY_ID, KEY_URI },
            KEY_ID + "=" + id, null, null,
            null, null, null);
    if (c != null) {
        c.moveToFirst();
    }
    return c;
}
// customer registration for update data
public boolean updateimages(long id, String uri) {
    ContentValues args = new ContentValues();
    // args.put(KEY_ID,id);
    args.put(KEY_URI, uri);
    return db.update(DATABASE_TABLE, args, KEY_ID + "=" + id, null) > 0;
}

// customer registration for insert data
public long insertImages(String uri) {
    ContentValues args = new ContentValues();
    //args.put(KEY_ID, id);
    args.put(KEY_URI, uri);
    long n = db.insert(DATABASE_TABLE, null, args);
    //db.insertOrThrow(DATABASE_TABLE, null, args);
    return n;
}

// customer registration for remove data
public boolean deleteImages(long id) {
    return db.delete(DATABASE_TABLE, KEY_ID + "=" + id, null) > 0;

}
}
这是我调用insert方法的ImageAdapter类。 mThumbs是uri Arraylist,用于在检索时存储数据库内容

public ImageAdapter(Context c, android.net.Uri uri) {
    mContext = c;
    db= new DBAdapter(mContext);
    try {
    db.open();
    db.insertImages(uri.toString());
    db.close();
    }catch(Exception e){
        e.printStackTrace();
    }
    upadteAllImages();

       notifyDataSetChanged();
}

public ImageAdapter(Context c, ArrayList<Uri> imageUris) {
    mContext = c;
    db= new DBAdapter(mContext);
    try {
    db.open();
    for (int i = 0; i < imageUris.size(); i++){
    db.insertImages(imageUris.get(i).toString());
    }
    db.close();
    }catch(Exception e){
        e.printStackTrace();
    }
    upadteAllImages();

       notifyDataSetChanged();
}

private void upadteAllImages() {
    mTHumbs.clear();

    try{
        db.open();
        Cursor c = db.getAllImages();
        if (c.moveToFirst()) {
            while (c.moveToNext()){
                String uri = c.getString(1);
                mTHumbs.add(Uri.parse(uri));
            }
        }
        //mTHumbs.add((Uri) db.getAllImages());

        db.close();
    }catch(Exception e){
        e.printStackTrace();
    }
}
公共图像适配器(上下文c,android.net.Uri){ mContext=c; db=新的DBAdapter(mContext); 试一试{ db.open(); db.insertImages(uri.toString()); db.close(); }捕获(例外e){ e、 printStackTrace(); } UpadteAlliges(); notifyDataSetChanged(); } 公共ImageAdapter(上下文c、ArrayList ImageURI){ mContext=c; db=新的DBAdapter(mContext); 试一试{ db.open(); 对于(int i=0;i在数据库中创建表需要进行一些小的更改

请看这个-

" CREATE TABLE temp_images1 ( id INTEGER PRIMARY KEY AUTOINCREMENT, "
    + "uri TEXT NOT NULL ) ; ";
  • 修复
    创建表
    中的语法错误<代码>自动递增只能与
    整数主键
    一起使用,您缺少
    主键

  • 删除
    onCreate()
    中的try catch,以便在出现语法问题时获得异常

  • 卸载应用程序,以便删除旧数据库,并使用固定的SQL重新运行帮助程序
    onCreate()


  • 请看一下我的回答,我试过了,但没用。still insert返回-1。仍然找不到表?或其他内容?相同的错误。。没有这样的表存在,除非您使用非常简单的OrmLiteSqliteDB,否则没有任何限制
    String query = "CREATE TABLE " + DATABASE_TABLE  + "("
                + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
                + KEY_URI + " TEXT not null "+)";