1

Test.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. 2 つの for ループは高価です。2. c1 と c2 も閉じます。

于 2013-04-11T16:22:50.210 に答える