Java:Android:SQLite:使用For循环执行多个插入

时间:2013-01-16 11:16:29

标签: java android sqlite for-loop insert

请查看以下代码:

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解释器识别?

谢谢!

3 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分: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;
}

这将根据您的广告订单

返回所有数据

答案 2 :(得分: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";
    }
}