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”)。

有什么方法可以在 for 循环中执行这些 SQL 语句?如果可以的话,我如何将数字连接到常量的名称上,并让 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 回答