无法检索源码信息 [英] cannot retrieve the information from sqlite

查看:134
本文介绍了无法检索源码信息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有我的屏幕上的3个按钮选择图像,SAVEDATA,checkdata。当我点击校验数据它显示一个空白屏幕,不显示任何图像 有一个警告,未使用的字段DataManipulator.insert的值 任何一个可以纠正我的code? 这是我DataManipulator.java

 公共类DataManipulator {
    私有静态最后弦乐DATABASE_NAME =mydatabase.db;
    私有静态最终诠释DATABASE_VERSION = 1;
    静态最后弦乐TABLE_NAME =newtable的;
    私有静态上下文的背景下;
    静态SQLiteDatabase分贝;
    私人SQLiteStatement插入;
    私有静态最后弦乐INSERT =变成+ TABLE_NAME +(名称)值(?);
    公共DataManipulator(上下文的背景下){
        DataManipulator.context =背景;
        OpenHelper openHelper =新OpenHelper(DataManipulator.context);
        DataManipulator.db = openHelper.getWritableDatabase();
        this.insert = DataManipulator.db.compileStatement(INSERT);
    }
    众长刀片(字符串名称){
        ContentValues​​的args =新ContentValues​​();
        args.put(姓名,名);
        返回db.insert(TABLE_NAME,空,参数);
    }
    公共无效用deleteAll(){
        db.delete(TABLE_NAME,NULL,NULL);
    }
    公开名单<的String []>全选()
    {
        名单<的String []>名单=新的ArrayList<的String []>();
        光标光标= db.query(TABLE_NAME,新的String [] {姓名},NULL,NULL,NULL,NULL,NULL);
        INT X = 0;
        如果(cursor.moveToFirst()){
            做 {
                的String [] B1 =新的String [] {cursor.getString(0)};
                list.add(B1);
                X = X + 1;
            }而(cursor.moveToNext());
        }
        如果(光标=空&安培;!&安培;!cursor.isClosed()){
            cursor.close();
        }
        cursor.close();
        返回列表;
    }
    公共无效删除(INT ROWID){
        db.delete(TABLE_NAME,NULL,NULL);
    }
    私有静态类OpenHelper扩展SQLiteOpenHelper {
        OpenHelper(上下文的背景下){
            超(背景下,DATABASE_NAME,空,DATABASE_VERSION);
        }
        @覆盖
        公共无效的onCreate(SQLiteDatabase DB){
            db.execSQL(CREATE TABLE+ TABLE_NAME +(Name文本));
        }
        @覆盖
        公共无效onUpgrade(SQLiteDatabase分贝,INT oldVersion,诠释静态网页){
            db.execSQL(DROP TABLE IF EXISTS+ TABLE_NAME);
            的onCreate(DB);
        }
    }
}
 

当我调试的logcat输出

  12月5号至23日:05:04.021:E / SQLiteDatabase(883):关闭()从来没有明确要求数据库/data/data/list.certificates/databases/mydatabase .db的
12月5日至23号:05:04.021:E / SQLiteDatabase(883):android.database.sqlite.DatabaseObjectNotClosedException:应用程序没有关闭在这里打开的游标或数据库对象
12月5日至23号:05:04.021:E / SQLiteDatabase(883):在android.database.sqlite.SQLiteDatabase< INIT>(SQLiteDatabase.java:1943)
12月5日至23号:05:04.021:E / SQLiteDatabase(883):在android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1007)
12月5日至23号:05:04.021:E / SQLiteDatabase(883):在android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:986)
12月5日至23号:05:04.021:E / SQLiteDatabase(883):在android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1051)
12月5日至23号:05:04.021:E / SQLiteDatabase(883):在android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:770)
12月5日至23号:05:04.021:E / SQLiteDatabase(883):在android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221)
12月5日至23号:05:04.021:E / SQLiteDatabase(883):在android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:157)
12月5日至23号:05:04.021:E / SQLiteDatabase(883):在list.certificates.DataManipulator< INIT>(DataManipulator.java:25)
12月5日至23号:05:04.021:E / SQLiteDatabase(883):在list.certificates.SaveData.onClick(SaveData.java:57)
12月5日至23号:05:04.021:E / SQLiteDatabase(883):在android.view.View.performClick(View.java:3480)
12月5日至23号:05:04.021:E / SQLiteDatabase(883):在android.view.View $ PerformClick.run(View.java:13983)
12月5日至23号:05:04.021:E / SQLiteDatabase(883):在android.os.Handler.handleCallback(Handler.java:605)
12月5日至23号:05:04.021:E / SQLiteDatabase(883):在android.os.Handler.dispatchMessage(Handler.java:92)
12月5日至23号:05:04.021:E / SQLiteDatabase(883):在android.os.Looper.loop(Looper.java:137)
12月5日至23号:05:04.021:E / SQLiteDatabase(883):在android.app.ActivityThread.main(ActivityThread.java:4340)
12月5日至23号:05:04.021:E / SQLiteDatabase(883):在java.lang.reflect.Method.invokeNative(本机方法)
12月5日至23号:05:04.021:E / SQLiteDatabase(883):在java.lang.reflect.Method.invoke(Method.java:511)
12月5日至23号:05:04.021:E / SQLiteDatabase(883):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)
12月5日至23号:05:04.021:E / SQLiteDatabase(883):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
12月5日至23号:05:04.021:E / SQLiteDatabase(883):在dalvik.system.NativeStart.main(本机方法)
12月5日至23号:05:04.061:E /系统(883):未捕获的异常抛出终结
12月5日至23号:05:04.281:E /系统(883):java.lang.IllegalStateException:不具备数据库锁!
12月5日至23号:05:04.281:E /系统(883):在android.database.sqlite.SQLiteDatabase.verifyLockOwner(SQLiteDatabase.java:2090)
12月5日至23号:05:04.281:E /系统(883):在android.database.sqlite.SQLiteDatabase $ 1.entryRemoved(SQLiteDatabase.java:2182)
12月5日至23号:05:04.281:E /系统(883):在android.database.sqlite.SQLiteDatabase $ 1.entryRemoved(SQLiteDatabase.java:2178)
12月5日至23号:05:04.281:E /系统(883):在android.util.LruCache.trimToSize(LruCache.java:197)
12月5日至23号:05:04.281:E /系统(883):在android.util.LruCache.evictAll(LruCache.java:285)
12月5日至23号:05:04.281:E /系统(883):在android.database.sqlite.SQLiteDatabase.deallocCachedSqlStatements(SQLiteDatabase.java:2143)
12月5日至23号:05:04.281:E /系统(883):在android.database.sqlite.SQLiteDatabase.closeClosable(SQLiteDatabase.java:1126)
12月5日至23号:05:04.281:E /系统(883):在android.database.sqlite.SQLiteDatabase.finalize(SQLiteDatabase.java:1914)
12月5日至23号:05:04.281:E /系统(883):在java.lang.Daemons $ FinalizerDaemon.doFinalize(Daemons.java:182)
12月5日至23号:05:04.281:E /系统(883):在java.lang.Daemons $ FinalizerDaemon.run(Daemons.java:168)
12月5日至23号:05:04.281:E /系统(883):在java.lang.Thread.run(Thread.java:856)
 

解决方案

 实施乌尔code本code检索
  公开名单<字符串> selectAll_trips(){
      名单<字符串>名单=新的ArrayList<字符串>();

      光标光标= this.db.query(TABLE_NAME,新的String [] {*},
              NULL,NULL,NULL,NULL,TRIPID降序);

      如果(cursor.moveToFirst()){
             做 {
                 list.add(cursor.getString(0));
                 list.add(cursor.getString(1));
                 list.add(cursor.getString(2));
                 list.add(cursor.getString(3));
                 list.add(cursor.getString(4));
                 list.add(cursor.getString(5));

               }而(cursor.moveToNext());
          }
      如果(光标=空&安培;!&安培;!cursor.isClosed()){
         cursor.close();
      }

      返回列表;
   }
 

I have 3 buttons on my screen choose image, savedata, checkdata. When I click on check data it shows a blank screen, it is not showing any images There is a warning that The value of the field DataManipulator.insert is not used Can any one correct my code? This is my DataManipulator.java

public class DataManipulator {
    private static final  String DATABASE_NAME = "mydatabase.db";
    private static final int DATABASE_VERSION = 1;
    static final String TABLE_NAME = "newtable";
    private static Context context;
    static SQLiteDatabase db;
    private SQLiteStatement insert; 
    private static final String INSERT = " into "   + TABLE_NAME + " (name) values (?)";
    public DataManipulator(Context context) {
        DataManipulator.context = context;
        OpenHelper openHelper = new OpenHelper(DataManipulator.context);
        DataManipulator.db = openHelper.getWritableDatabase();
        this.insert = DataManipulator.db.compileStatement(INSERT);
    }
    public long insert(String name) {
        ContentValues args = new ContentValues();
        args.put("name", name);
        return db.insert(TABLE_NAME, null, args);
    }
    public void deleteAll() {
        db.delete(TABLE_NAME, null, null);
    }
    public List<String[]> selectAll()
    {
        List<String[]> list = new ArrayList<String[]>();
        Cursor cursor = db.query(TABLE_NAME, new String[] { "name"},  null, null, null, null, null); 
        int x=0;
        if (cursor.moveToFirst()) {
            do {
                String[] b1=new String[]{cursor.getString(0)};
                list.add(b1);
                x=x+1;
            } while (cursor.moveToNext());
        }
        if (cursor != null && !cursor.isClosed()) {
            cursor.close();
        } 
        cursor.close();
        return list;
    }
    public void delete(int rowId) {
        db.delete(TABLE_NAME, null, null); 
    }
    private static class OpenHelper extends SQLiteOpenHelper {
        OpenHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }
        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL("CREATE TABLE " + TABLE_NAME + " (name TEXT)");
        }
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
            onCreate(db);
        }
    }
}

logcat output when I was debugging

05-23 12:05:04.021: E/SQLiteDatabase(883): close() was never explicitly called on database '/data/data/list.certificates/databases/mydatabase.db' 
05-23 12:05:04.021: E/SQLiteDatabase(883): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
05-23 12:05:04.021: E/SQLiteDatabase(883):  at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1943)
05-23 12:05:04.021: E/SQLiteDatabase(883):  at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1007)
05-23 12:05:04.021: E/SQLiteDatabase(883):  at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:986)
05-23 12:05:04.021: E/SQLiteDatabase(883):  at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1051)
05-23 12:05:04.021: E/SQLiteDatabase(883):  at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:770)
05-23 12:05:04.021: E/SQLiteDatabase(883):  at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221)
05-23 12:05:04.021: E/SQLiteDatabase(883):  at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:157)
05-23 12:05:04.021: E/SQLiteDatabase(883):  at list.certificates.DataManipulator.<init>(DataManipulator.java:25)
05-23 12:05:04.021: E/SQLiteDatabase(883):  at list.certificates.SaveData.onClick(SaveData.java:57)
05-23 12:05:04.021: E/SQLiteDatabase(883):  at android.view.View.performClick(View.java:3480)
05-23 12:05:04.021: E/SQLiteDatabase(883):  at android.view.View$PerformClick.run(View.java:13983)
05-23 12:05:04.021: E/SQLiteDatabase(883):  at android.os.Handler.handleCallback(Handler.java:605)
05-23 12:05:04.021: E/SQLiteDatabase(883):  at android.os.Handler.dispatchMessage(Handler.java:92)
05-23 12:05:04.021: E/SQLiteDatabase(883):  at android.os.Looper.loop(Looper.java:137)
05-23 12:05:04.021: E/SQLiteDatabase(883):  at android.app.ActivityThread.main(ActivityThread.java:4340)
05-23 12:05:04.021: E/SQLiteDatabase(883):  at java.lang.reflect.Method.invokeNative(Native Method)
05-23 12:05:04.021: E/SQLiteDatabase(883):  at java.lang.reflect.Method.invoke(Method.java:511)
05-23 12:05:04.021: E/SQLiteDatabase(883):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
05-23 12:05:04.021: E/SQLiteDatabase(883):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
05-23 12:05:04.021: E/SQLiteDatabase(883):  at dalvik.system.NativeStart.main(Native Method)
05-23 12:05:04.061: E/System(883): Uncaught exception thrown by finalizer
05-23 12:05:04.281: E/System(883): java.lang.IllegalStateException: Don't have database lock!
05-23 12:05:04.281: E/System(883):  at android.database.sqlite.SQLiteDatabase.verifyLockOwner(SQLiteDatabase.java:2090)
05-23 12:05:04.281: E/System(883):  at android.database.sqlite.SQLiteDatabase$1.entryRemoved(SQLiteDatabase.java:2182)
05-23 12:05:04.281: E/System(883):  at android.database.sqlite.SQLiteDatabase$1.entryRemoved(SQLiteDatabase.java:2178)
05-23 12:05:04.281: E/System(883):  at android.util.LruCache.trimToSize(LruCache.java:197)
05-23 12:05:04.281: E/System(883):  at android.util.LruCache.evictAll(LruCache.java:285)
05-23 12:05:04.281: E/System(883):  at android.database.sqlite.SQLiteDatabase.deallocCachedSqlStatements(SQLiteDatabase.java:2143)
05-23 12:05:04.281: E/System(883):  at android.database.sqlite.SQLiteDatabase.closeClosable(SQLiteDatabase.java:1126)
05-23 12:05:04.281: E/System(883):  at android.database.sqlite.SQLiteDatabase.finalize(SQLiteDatabase.java:1914)
05-23 12:05:04.281: E/System(883):  at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:182)
05-23 12:05:04.281: E/System(883):  at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:168)
05-23 12:05:04.281: E/System(883):  at java.lang.Thread.run(Thread.java:856)

解决方案

 implement ur code in this code for retrieving
  public List<String> selectAll_trips() {
      List<String> list = new ArrayList<String>();

      Cursor cursor = this.db.query(TABLE_NAME, new String[] { "*" },
              null , null, null, null, "tripid desc");

      if (cursor.moveToFirst()) {
             do {
                 list.add(cursor.getString(0));
                 list.add(cursor.getString(1));
                 list.add(cursor.getString(2));
                 list.add(cursor.getString(3));
                 list.add(cursor.getString(4));
                 list.add(cursor.getString(5));

               } while (cursor.moveToNext());
          }
      if (cursor != null && !cursor.isClosed()) {
         cursor.close();
      }

      return list;
   }

这篇关于无法检索源码信息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆