从字符串值和查询引用类

时间:2013-08-21 00:21:17

标签: android database string class android-intent

在我的活动中,我需要调用查询不同的数据库,具体取决于用户选择的数据库。我不想单独调用每一个,而是希望有一个查询代码,只需从字符串值更改数据库的intent或类。基本上我需要将我的数据库名称引用从我的类“EmployeeDatabase”更改为用户当前选择的任何数据库。我需要将选定的字符串x设置为类y,然后让类y能够查询。我想尽我所知解释,抱歉,如果它令人困惑。谢谢你的帮助!

不知何故,我需要能够将变量y设置为用户选择的类,然后能够查询如下:c = db.query(y.EMP_TABLE4,null,null,null,null,null,null);它说EMP_TABLE4无法解析或不是字段。

我的数据库现在如何只使用一个数据库选项:

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.redlight2);

    EmployeeDatabase db=null;

    try{
    ListContent = (ListView)findViewById(R.id.listView1);

    db=new EmployeeDatabase(this);

    c=db.query(EmployeeDatabase.EMP_TABLE4, null,
            null,null,null,null,null);


            mydisplayadapter4 adapter = new mydisplayadapter4(this, c);
            ListContent.setAdapter(adapter);

    }
    catch(Exception e){System.out.println("problem");}

我希望它如何运作:

     String x;

Class<?> y;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.redlight2);

    String x = "my database class name";

    try {

        y = Class.forName(x);

    } catch (ClassNotFoundException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }



    // I want to replace everything that says EmployeeDatabase with y

    EmployeeDatabase db=null;

    try{
    ListContent = (ListView)findViewById(R.id.listView1);

    db=new EmployeeDatabase(this);

    c=db.query(EmployeeDatabase.EMP_TABLE4, null,
            null,null,null,null,null);


            mydisplayadapter4 adapter = new mydisplayadapter4(this, c);// OWN ADAPTER
            ListContent.setAdapter(adapter);

1 个答案:

答案 0 :(得分:0)

如果你想访问各种具有相同模式的数据库(从你的代码看起来就是这样),那么它应该非常简单。

  • 从SQLiteOpenHelper创建派生类。
  • 创建此对象时,传递数据库名称。应用程序的其他部分不需要知道它正在使用什么数据库。
  • 同时确保将此课程设为单身人士。因此,您可以通过关闭当前使用的数据库然后打开新数据库轻松切换到其他数据库。
  • 当您从任何地方调用getWritableDatabase()进行数据库操作时,它将返回正确的数据库句柄。