从sqlite数据库计数导致错误

时间:2014-06-10 16:13:24

标签: arrays android-sqlite

我试图将一个int数组从MainActivity传递给databaseadapter,以便从sqlite数据库运行一个计数。我得到的代码如下,没有任何来自eclipse的错误,但一旦运行,就会崩溃。

代码如下 对于主动性

            int one = 1;
            int  five = 5;  

            int[] apple = {one, five};   
            int numr = (int) myDb.getCount(apple);

            TextView textv = (TextView) findViewById(R.id.wds);
                   textv.setText("There are" + numr + "of entries");    

对于Databaseadapter,Datab,

        public int getCount(int[] apple) {
        int fir = apple[1];
        int sec = apple[2];

    int fin = (int) DatabaseUtils.longForQuery(db, "SELECT COUNT(*)
             FROM TABLE_NAME where  length >= " +fir + "and width >=" 
             + sec, null);  
             return nfin;

logcat如下

06-10 15:44:05.817: E/AndroidRuntime(1737): FATAL EXCEPTION: main
06-10 15:44:05.817: E/AndroidRuntime(1737): java.lang.ArrayIndexOutOfBoundsException: length=2; index=2
06-10 15:44:05.817: E/AndroidRuntime(1737):     at com.example.pro.Datab.getCount(Datab.java:110)
06-10 15:44:05.817: E/AndroidRuntime(1737):     at com.example.pro.MainActivity.onItemSelected(Qus.java:237)
06-10 15:44:05.817: E/AndroidRuntime(1737):     at android.widget.AdapterView.fireOnSelected(AdapterView.java:892)
06-10 15:44:05.817: E/AndroidRuntime(1737):     at android.widget.AdapterView.access$200(AdapterView.java:49)
06-10 15:44:05.817: E/AndroidRuntime(1737):     at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:860)

正如您可能猜到的那样,我对Android / Java非常陌生,所以我很感激我能得到的任何帮助。提前谢谢。

2 个答案:

答案 0 :(得分:0)

除了数组从0开始,所以你的索引应该是:

int fir = apple[0];
int sec = apple[1];

假设您的表名是" TABLE_NAME",请在"and width...之前添加一个空格,以便阅读" and width...
或者无法执行查询

它实际上会导致某些东西(不起作用),如:

SELECT COUNT(*)FROM TABLE_NAME where  length >= 10and width >=20

虽然它应该像(工作)那样:

SELECT COUNT(*) FROM TABLE_NAME where length >= 10 and width >= 20

答案 1 :(得分:0)

数组索引从0开始,但您已使用apple中的索引1和2。索引2超出范围,如错误日志中所述:

  

java.lang。 ArrayIndexOutOfBoundsException :length = 2; index = 2 06-10

您的错误与SQL无关。