Android SQLite:rawquery疑难解答

问题描述:

好吧,我一直在研究这个“动态负载的微调”从这个论坛anddev.org我修复了力量关闭错误我已经得到了现在我一直有问题,当我开始使用我的sql变量,从模拟器开始,它对我来说是锁定的,好像光标停留在一个循环中,logcat不显示任何错误。任何关于它可能会粘在哪里的想法?Android SQLite:rawquery疑难解答

public static final String KEY_ROWID = "_rowid"; 
    public static final String KEY_ONE = "serial"; 
    public static final String KEY_TWO = "name"; 
    public static final String KEY_THREE = "place"; 

    private static final String KEY_DB = "DbTester"; 
    private static final String KEY_TABLE = "DbTable"; 
    private static final int VERSION = 1; 

    //static final String DB_NAME="contacts"; 
    //static final String NAMES_TABLE="names"; 
    private DbHelper ourHelper; 
    private final Context ourContext; 
    private SQLiteDatabase ourDB; 
    SQLiteDatabase db=null; 

那么这里就是我的方法loadSpinner()

DbHelper dbhelper=new DbHelper(this.ourContext, KEY_TABLE, null, 2); 
      db=dbhelper.getWritableDatabase(); 

      Cursor c=db.rawQuery("SELECT * FROM "+KEY_TWO, null); 

      if(c != null) { 

      while(!c.isLast()) 
        c.moveToNext(); //I dont understand why but it's necessary (alternative call c.getCount()) 

      String[] from=new String[1]; 
      from[0]="name"; 

      int[] to=new int[1]; 
      to[0]=android.R.id.text1; 


      SimpleCursorAdapter adapter=new SimpleCursorAdapter(this.ourContext, android.R.layout.simple_spinner_item, c, from, to); 


      c.close(); 
      db.close(); 

      return adapter; 
      } 

想不出其他任何可能助阵,如果不再的信息是只需要这么说,我会张贴。在此先感谢

我看到的三件证据:

1)您的模拟器已锁定。
2)根据我的经验,虽然声明因引起锁定而臭名昭着。
3)你不知道你的while语句做什么,但你需要它。

测试推荐:

尝试用if语句,使只有一个调用c.MoveToNext(),看看您是否仍然得到锁定取代时间。如果是这样,你已经缩小了这个问题。

+0

感谢您的帮助,通过应用程序进行故障排除,帮助我们获得了巨大的帮助 – acrichm 2011-12-26 05:29:08