0

次のコードを確認してください。

try {
          db.beginTransaction();
          db.execSQL(DBConstants.PRAG_FOR_KEYS_ON);

          db.execSQL(DBConstants._BLDG_CREATE);
          db.execSQL(DBConstants._BLDG_INDEX);
          for(int x = 0; x < 28; x = x+1){
              db.execSQL(DBConstants._BLDG_INSERT+x);
          }

          db.execSQL(DBConstants.PRAG_FOR_KEYS_OFF);
          db.setTransactionSuccessful();
        } catch (SQLException e) {
          e.printStackTrace();
        }finally{
          db.endTransaction();
        }

各挿入定数(新しいデータの行を表す)には、次のように番号が付けられます。

public static final String _BLDG_INSERT0 = "<SQL insert statement>"

... 28まで( "_BLDG_INSERT28")。

これらのSQLステートメントをforループで実行する方法はありますか?可能であれば、定数の名前に数字を連結し、Javaインタープリターによって正しい方法で認識させるにはどうすればよいですか?

ありがとう!

4

3 に答える 3

1

定数を変更できるかどうかは、質問からは明らかではありません。可能であれば、ステートメントを配列に配置できるとよいでしょう。

String[] _BLDG_INSERT = {"<SQL insert statement>",   // 0
                         "<SQL insert statement>",   // 1
                         ...
                         "<SQL insert statement>"    // 28
                        };

そして、あなたはこのようにそれらにアクセスすることができます。

for(int x = 0; x < 28; x = x+1){
    db.execSQL(DBConstants._BLDG_INSERT[x]);
}

またはさらに良い:

for(String s : DBConstants._BLDG_INSERT) {
    db.execSQL(s);
}
于 2013-01-16T11:45:03.230 に答える
0
    public ArrayList<String> getAllRecord()
{
    ArrayList<String> total = new ArrayList<String>();
    Cursor cursor1 = null;
    try
    {
        cursor1 = getDBobject().rawQuery(
                "select * from "
                + Your table name + ";", null);
        if (cursor1.moveToFirst())
        {
            do
            {
                String cid = cursor1.getString(1);
                total.add(cid);

            }
            while (cursor1.moveToNext());
        }
    }
    catch (Exception e)
    {
        System.out.println("" + TAG + " :" + e);
    }
    finally
    {
        if (cursor1 != null && !cursor1.isClosed())
        {
            cursor1.close();
        }
    }
    return total;
}

これにより、挿入順序に従ってすべてのデータが返されます

于 2013-01-16T11:27:43.520 に答える
0

次のようなものを試してください。

public class testeReflection {
    public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException{
        MyClass myClass = new MyClass();

        Class aClass = MyClass.class;

        for(int i = 0; i < 5; i++){
            try {
                Field field = aClass.getField("VAR" + i);

                String s = (String)field.get(myClass);

                System.out.println("myClass[" + i + "] = " + s);                
            } catch (NoSuchFieldException ex) {
                Logger.getLogger(testeReflection.class.getName()).log(Level.SEVERE, null, ex);
            } catch (SecurityException ex) {
                Logger.getLogger(testeReflection.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

    public static class MyClass{
        public static final String VAR0 = "VARIAVEL 01";
        public static final String VAR1 = "VARIAVEL 02";
        public static final String VAR2 = "VARIAVEL 03";
        public static final String VAR3 = "VARIAVEL 04";
        public static final String VAR4 = "VARIAVEL 05";
    }
}
于 2013-01-16T11:41:01.840 に答える