1

测试.java:

 SQLiteDatabase db=openOrCreateDatabase("data",MODE_PRIVATE,null);
    db.execSQL("CREATE TABLE IF NOT EXISTS location(ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME VARCHAR(100),CBcode VARCHAR(100));");
    Cursor c1 = db.rawQuery("Select NAME from location", null);
    Cursor c2 = db.rawQuery("Select CBcode from location", null);
    if(c1==null || c2 == null)
    {
        Toast.makeText(getBaseContext(), "Database values empty, please refer Help option    befor you start using the app..", Toast.LENGTH_LONG).show();
    }
    else
    {
    c1.moveToFirst();
    c2.moveToFirst();
    int col1=c1.getColumnIndex("NAME");
           int col2=c2.getColumnIndex("CBcode");
            for(c1.moveToFirst(); c1.moveToLast(); c1.moveToNext())
            {
                    for(c2.moveToFirst(); c2.moveToLast(); c2.moveToNext())
                    {
                            if(loc_name == c1.getString(col1))
                            {
                              my_cb = c2.getString(col2);
                              c2.close();
                              c1.close();
                              Toast.makeText(getBaseContext(), "alarm has been set", Toast.LENGTH_LONG).show();
                              break;
                            }
                            else
                            {
                            //  Toast.makeText(getBaseContext(), "No such values in database, please read Help carefully before using lovisis!", Toast.LENGTH_LONG).show();
                            }
                    }
            }
    }
    db.close();

在我上面的代码中,我试图访问数据库并在字符串匹配时开始一个新的活动,但是我越来越接近从来没有在数据库错误上显式调用。请帮忙

4

1 回答 1

1

纳豆,

我已将您的代码更改如下,它对我有用。请检查并让我知道。

                SQLiteDatabase db=openOrCreateDatabase("data",MODE_PRIVATE,null);
                db.execSQL("CREATE TABLE IF NOT EXISTS location(ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME VARCHAR(100),CBcode VARCHAR(100));");
                Cursor c1 = db.rawQuery("Select NAME from location", null);
                Cursor c2 = db.rawQuery("Select CBcode from location", null);
                if(c1==null || c2 == null)
                {
                    Toast.makeText(getBaseContext(), "Database values empty, please refer Help option befor you start using the app..", Toast.LENGTH_LONG).show();
                }
                else
                {
                    c1.moveToFirst();
                    c2.moveToFirst();

                    int col1=c1.getColumnIndex("NAME");
                    int col2=c2.getColumnIndex("CBcode");

                    while(c1.moveToNext() && c2.moveToNext())
                    {
                            if(loc_name.equals(c1.getString(col1)))
                            {
                               my_cb = c2.getString(col2);
                               Toast.makeText(getBaseContext(), "alarm has been set", Toast.LENGTH_LONG).show();
                            }
                            else
                            {
                            //  Toast.makeText(getBaseContext(), "No such values in database, please read Help carefully before using lovisis!", Toast.LENGTH_LONG).show();
                            }
                    }
                }
                c2.close();
                c1.close();
                db.close();

你的错误是,1. 两个 for 循环很昂贵,使用 && 的 while,如图所示。2. 同时关闭 c1 和 c2。

于 2013-04-11T16:22:50.210 回答