Android数据库简单的rawQuery

时间:2016-03-29 02:54:29

标签: java android sqlite

我在我的主要活动中创建了一个简单的rawQuery,但它不起作用。光标不起作用,但我的数据库已经在外部存储中的此PELE文件夹中。请帮我解决问题

我的帮助班是:

    public class Helper extends SQLiteOpenHelper{

    private static final String LOGTAG="EXPLORECA";
    private static final String DATABASE_NAME="Adatbazis.db";
    private static final int DATABASE_VERSION=1;
    private static final String FILE_DIR="PELE";


    public Helper(Context context) {
        super(context, Environment.getExternalStorageDirectory()
                + File.separator + FILE_DIR
                + File.separator + DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        Log.i(LOGTAG, "Az adattábla elkészült");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }


}

这是我的主要活动。

 public class MainActivity extends AppCompatActivity  {

    SQLiteOpenHelper dbHelper;
    SQLiteDatabase db;
    Spinner helysegvalaszto, tagvalaszto, reszletvalaszto;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        helysegvalaszto();

    }

    public void helysegvalaszto(){

        dbHelper= new Helper(this);
        db=dbHelper.getReadableDatabase();


        ArrayList<String> helysegek = new ArrayList<String>();


        Cursor Chelyseg = db.rawQuery("select DISTINCT Helykod.h_kod, Helykod.h_nev from import1 JOIN Helykod on import1.helyseg=Helykod.h_kod", null);
        Chelyseg.moveToFirst();

        String hely = "";

        while (!Chelyseg.isAfterLast()) {
            hely = "" + Chelyseg.getString(Chelyseg.getColumnIndex("h_nev"));

            helysegek.add(hely);
            Chelyseg.moveToNext();
        }

        ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(
                this,
                android.R.layout.simple_list_item_1,
                helysegek);


        helysegvalaszto.setAdapter(adapter1);
    }


}    

感谢您的帮助:):)

1 个答案:

答案 0 :(得分:0)

通过扩展SQLiteOpenHelper,您可以告诉android db的名称以及要在db中创建的所有结构。与桌子一起&#39;如果要使用预先填充的数据库,则需要使用SqliteAssetHelper

第1步
在依赖关系部分中将以下内容添加到应用程序的gradle文件中:
compile 'com.readystatesoftware.sqliteasset:sqliteassethelper:+'

第2步
app/main/src的项目结构中,创建名为assets的目录 在assets内创建名为databases的目录。

第3步
adatbazis.db放入databases目录。

第4步
Helper类代码更改为以下

public class Helper extends SQLiteAssetHelper{
    private static final String DATABASE_NAME = "jain.db";
    private static final int DATABASE_VERSION = 1;

    public MySQLiteHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
}