Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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
从androidsql获取数据_Android_Android Sqlite - Fatal编程技术网

从androidsql获取数据

从androidsql获取数据,android,android-sqlite,Android,Android Sqlite,我用安卓系统建立了一个照片数据库。代码如下 public class PhotoDataHandler extends SQLiteOpenHelper { // All Static variables // Database Version private static final int DATABASE_VERSION = 77; // Database Name private static final String DATABASE_NAME

我用安卓系统建立了一个照片数据库。代码如下

public class PhotoDataHandler extends SQLiteOpenHelper {
    // All Static variables
    // Database Version
    private static final int DATABASE_VERSION = 77;

    // Database Name
    private static final String DATABASE_NAME = "photos";

    // DATA table name
    private static final String TABLE_PHOTOS = "PHOTOS";

    // DATA Table Columns names
    private static final String KEY_ID = "id";
    private static final String PHOTO_ID = "photo_id";
    private static final String KEY_JSON = "json";

    public PhotoDataHandler(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String CREATE_DATA_TABLE = "CREATE TABLE " + TABLE_PHOTOS + "("
                + KEY_ID + " INTEGER PRIMARY KEY," + KEY_JSON + " TEXT"
                + PHOTO_ID + " TEXT" + ")";
        db.execSQL(CREATE_DATA_TABLE);
    }

    // Upgrading database
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // Drop older table if existed
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_PHOTOS);

        // Create tables again
        onCreate(db);
    }

    // truncate all data
    public void truncateAllData() {
        SQLiteDatabase db = this.getReadableDatabase();

        db.execSQL("DELETE FROM " + TABLE_PHOTOS);
        db.close();
    }

    // Add new DATA
    public void addPhoto(Photo photo) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(KEY_JSON, photo.getID());
        values.put(PHOTO_ID, photo.getphotoId());
        values.put(KEY_JSON, photo.getPhotoString());
        // Inserting Row
        db.insert(TABLE_PHOTOS, null, values);
        db.close(); // Closing database connection
    }

    public Photo getLastPhotos() {
        SQLiteDatabase db = this.getReadableDatabase();

        String selectQuery = "SELECT * FROM " + TABLE_PHOTOS
                + " ORDER BY id DESC LIMIT 1";

        Cursor cursor = db.rawQuery(selectQuery, null);

        if (cursor.getCount() != 0) {
            cursor.moveToFirst();
            Photo photo = new Photo(cursor.getString(1));
            db.close();
            return photo;
        } else {
            Photo photo = new Photo();
            db.close();
            return photo;
        }
    }

    // Getting All DATA
    public List<Photo> getAllData() {
        List<Photo> PhotoList = new ArrayList<Photo>();
        // Select All Query
        String selectQuery = "SELECT  * FROM " + TABLE_PHOTOS;

        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);

        // looping through all rows and adding to list
        if (cursor.moveToFirst()) {
            do {
                Photo photo = new Photo();
                photo.setID(Integer.parseInt(cursor.getString(0)));
                photo.setPhotoString((cursor.getString(1)));

//error is in this line : from logcat
    **photo.setphotoId((Integer.parseInt(cursor.getString(2))));**


                // Adding contact to list
                PhotoList.add(photo);
            } while (cursor.moveToNext());
        }

        // return user list
        db.close();
        return PhotoList;
    }
}
当我想获取数据库中的所有日期时,我使用sql PhotoDataHandler类中写入的方法:

String alldata = "null";
                List<Photo> photos = photodb.getAllData();
                int nr_photos=0;
                for(Photo x:photos){
                    System.out.println("nr of line : " + nr_photos +" photos id "+x.getID()+ "Stringas yra : "+ x.getPhotoString()+ " dar vienas id yra : " + x.getphotoId()) ;
                    nr_photos++;
                }
String alldata=“null”;
List photos=photodb.getAllData();
int nr_照片=0;
(照片x:照片){
System.out.println(“行号:”+nr_photos+“photos id”+x.getID()+“Stringas yra:”+x.getPhotoString()+“dar vienas id yra:”+x.getphotoId());
nr_照片++;
}
我每次用它来做手术都会得到一个eror。原木猫看起来像这样:

05-08 11:16:52.489: E/SQLiteLog(2256): (1) table PHOTOS has no column named photo_id
05-08 11:16:52.499: E/SQLiteDatabase(2256): Error inserting id=131 photo_id=62 json=vienas
05-08 11:16:52.499: E/SQLiteDatabase(2256): android.database.sqlite.SQLiteException: table PHOTOS has no column named photo_id (code 1): , while compiling: INSERT INTO PHOTOS(id,photo_id,json) VALUES (?,?,?)
05-08 11:16:52.499: E/SQLiteDatabase(2256):     at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
05-08 11:16:52.499: E/SQLiteDatabase(2256):     at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
05-08 11:16:52.499: E/SQLiteDatabase(2256):     at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
05-08 11:16:52.499: E/SQLiteDatabase(2256):     at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
05-08 11:16:52.499: E/SQLiteDatabase(2256):     at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
05-08 11:16:52.499: E/SQLiteDatabase(2256):     at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
05-08 11:16:52.499: E/SQLiteDatabase(2256):     at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1467)
05-08 11:16:52.499: E/SQLiteDatabase(2256):     at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339)
05-08 11:16:52.499: E/SQLiteDatabase(2256):     at com.project.sqlite.PhotoDataHandler.addPhoto(PhotoDataHandler.java:68)
05-08 11:16:52.499: E/SQLiteDatabase(2256):     at com.project.elements.Element$3.onClick(Element.java:730)
05-08 11:16:52.499: E/SQLiteDatabase(2256):     at android.view.View.performClick(View.java:4438)
05-08 11:16:52.499: E/SQLiteDatabase(2256):     at android.view.View$PerformClick.run(View.java:18422)
05-08 11:16:52.499: E/SQLiteDatabase(2256):     at android.os.Handler.handleCallback(Handler.java:733)
05-08 11:16:52.499: E/SQLiteDatabase(2256):     at android.os.Handler.dispatchMessage(Handler.java:95)
05-08 11:16:52.499: E/SQLiteDatabase(2256):     at android.os.Looper.loop(Looper.java:136)
05-08 11:16:52.499: E/SQLiteDatabase(2256):     at android.app.ActivityThread.main(ActivityThread.java:5017)
05-08 11:16:52.499: E/SQLiteDatabase(2256):     at java.lang.reflect.Method.invokeNative(Native Method)
05-08 11:16:52.499: E/SQLiteDatabase(2256):     at java.lang.reflect.Method.invoke(Method.java:515)
05-08 11:16:52.499: E/SQLiteDatabase(2256):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
05-08 11:16:52.499: E/SQLiteDatabase(2256):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
05-08 11:16:52.499: E/SQLiteDatabase(2256):     at dalvik.system.NativeStart.main(Native Method)
05-08 11:16:52.489:E/SQLiteLog(2256):(1)表PHOTOS没有名为photo\u id的列
05-08 11:16:52.499:E/SQLiteDatabase(2256):插入id=131 photo_id=62 json=vienas时出错
05-08 11:16:52.499:E/SQLiteDatabase(2256):android.database.sqlite.SQLiteException:表格照片没有名为photo_id(代码1)的列,编译时:插入照片(id,photo_id,json)值(?,?)
05-08 11:16:52.499:E/SQLiteDatabase(2256):位于android.database.sqlite.SQLiteConnection.nativepreparest陈述(本机方法)
05-08 11:16:52.499:E/SQLiteDatabase(2256):位于android.database.sqlite.SQLiteConnection.acquiredpreparedstatement(SQLiteConnection.java:889)
05-08 11:16:52.499:E/SQLiteDatabase(2256):在android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
05-08 11:16:52.499:E/SQLiteDatabase(2256):在android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
05-08 11:16:52.499:E/SQLiteDatabase(2256):位于android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:58)
05-08 11:16:52.499:E/SQLiteDatabase(2256):位于android.database.sqlite.SQLiteStatement.(SQLiteStatement.java:31)
05-08 11:16:52.499:E/SQLiteDatabase(2256):位于android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1467)
05-08 11:16:52.499:E/SQLiteDatabase(2256):位于android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339)
05-08 11:16:52.499:E/SQLiteDatabase(2256):位于com.project.sqlite.PhotoDataHandler.addPhoto(PhotoDataHandler.java:68)
05-08 11:16:52.499:E/SQLiteDatabase(2256):位于com.project.elements.Element$3.onClick(Element.java:730)
05-08 11:16:52.499:E/SQLiteDatabase(2256):在android.view.view.performClick(view.java:4438)
05-08 11:16:52.499:E/SQLiteDatabase(2256):位于android.view.view$PerformClick.run(view.java:18422)
05-08 11:16:52.499:E/SQLiteDatabase(2256):位于android.os.Handler.handleCallback(Handler.java:733)
05-08 11:16:52.499:E/SQLiteDatabase(2256):位于android.os.Handler.dispatchMessage(Handler.java:95)
05-08 11:16:52.499:E/SQLiteDatabase(2256):位于android.os.Looper.loop(Looper.java:136)
05-08 11:16:52.499:E/SQLiteDatabase(2256):位于android.app.ActivityThread.main(ActivityThread.java:5017)
05-08 11:16:52.499:E/SQLiteDatabase(2256):位于java.lang.reflect.Method.invokenactive(本机方法)
05-08 11:16:52.499:E/SQLiteDatabase(2256):位于java.lang.reflect.Method.invoke(Method.java:515)
05-08 11:16:52.499:E/SQLiteDatabase(2256):位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
05-08 11:16:52.499:E/SQLiteDatabase(2256):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
05-08 11:16:52.499:E/SQLiteDatabase(2256):位于dalvik.system.NativeStart.main(本机方法)
有经验的人能告诉我出了什么问题吗?

你在这里出了问题

+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_JSON + " TEXT" // forget to add , comma after TEXT
请在下面更正

String CREATE_DATA_TABLE = "CREATE TABLE " + TABLE_PHOTOS + "("
            + KEY_ID + " INTEGER PRIMARY KEY, " + KEY_JSON + " TEXT, "
            + PHOTO_ID + " TEXT" + ")";
你在这里出错了

+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_JSON + " TEXT" // forget to add , comma after TEXT
请在下面更正

String CREATE_DATA_TABLE = "CREATE TABLE " + TABLE_PHOTOS + "("
            + KEY_ID + " INTEGER PRIMARY KEY, " + KEY_JSON + " TEXT, "
            + PHOTO_ID + " TEXT" + ")";
你在这里出错了

+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_JSON + " TEXT" // forget to add , comma after TEXT
请在下面更正

String CREATE_DATA_TABLE = "CREATE TABLE " + TABLE_PHOTOS + "("
            + KEY_ID + " INTEGER PRIMARY KEY, " + KEY_JSON + " TEXT, "
            + PHOTO_ID + " TEXT" + ")";
你在这里出错了

+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_JSON + " TEXT" // forget to add , comma after TEXT
请在下面更正

String CREATE_DATA_TABLE = "CREATE TABLE " + TABLE_PHOTOS + "("
            + KEY_ID + " INTEGER PRIMARY KEY, " + KEY_JSON + " TEXT, "
            + PHOTO_ID + " TEXT" + ")";

如果我用文本更改整数主键。问题依然存在same@user3416113你为什么要改变?您只需按照我的回答更正CREATETABLE命令,您必须卸载应用程序并再次安装,以便删除旧数据库并创建新数据库。但问题出在哪里?逗号后的一个空格?你忘记了为什么不创建列的逗号。然后在该列上插入数据,这样就不会找到任何包含photo_idif的列,如果我将integer主键更改为text。问题依然存在same@user3416113你为什么要改变?您只需按照我的回答更正CREATETABLE命令,您必须卸载应用程序并再次安装,以便删除旧数据库并创建新数据库。但问题出在哪里?逗号后的一个空格?你忘记了为什么不创建列的逗号。然后在该列上插入数据,这样就不会找到任何包含photo_idif的列,如果我将integer主键更改为text。问题依然存在same@user3416113你为什么要改变?您只需按照我的回答更正CREATETABLE命令,您必须卸载应用程序并再次安装,以便删除旧数据库并创建新数据库。但问题出在哪里?逗号后的一个空格?你忘记了为什么不创建列的逗号。然后在该列上插入数据,这样就不会找到任何包含photo_idif的列,如果我将integer主键更改为text。问题依然存在same@user3416113你为什么要改变?您只需按照我的回答更正CREATETABLE命令,您必须卸载应用程序并再次安装,以便删除旧数据库并创建新数据库。但问题出在哪里?逗号后的一个空格?你忘记了为什么不创建列的逗号。然后在该列上插入数据,这样就不会找到任何具有photo_id的列