簡體   English   中英

試圖從Android上的SQLite表獲取數據……我在做什么錯?

[英]Trying to get data from a SQLite table on Android… What am I doing wrong?

我正在嘗試制作一個Android應用程序,可以在其中選擇一個地點(一家公司)並使用Google Maps打開它。 我首先嘗試了一個數組,只是檢查它是否工作,並且工作正常。 因此,在那之后,我想做得更好,並創建一個只有一個表的數據庫,以在應用程序和數據庫之間進行交互。 數據庫的名稱為dbEmpresas.db ,表的名稱為empresas

MainActivity.java

public class MainActivity extends Activity{
    private Button conf;
    private Spinner cb;
    private String busqueda;
    private BDAdapter bd;
    private int i = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        cb = (Spinner) findViewById(R.id.cbBizkaia);
        conf = (Button)findViewById(R.id.bConf);

        llenarCB();

        conf = (Button)findViewById(R.id.bConf);
        conf.setOnClickListener(new OnClickListener(){
            public void onClick(View v){
                buscarMapa(cb.getSelectedItem().toString());
            }
        });
    }

    private void llenarCB() {
        try{
            bd = new BDAdapter(this);
            bd.open();
            Cursor s = bd.getEmpresas();
            String Empre[] = new String[bd.contEmp()];
            //String s[] = {"Beertecni","Linersa", "Técnicas Hidráulicas"};
            while(s.moveToNext()) {
                Empre[i] = s.getString(0);
                i++;
            }
            ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, Empre);
            cb.setAdapter(dataAdapter);
            bd.close();
        } catch (SQLiteException e) {
            System.out.println("Error "+e);
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    private void buscarMapa(String empresa) {       
        String dire = bd.getEnlace(empresa).toString();

        Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("geo:0,0?q="+busqueda));
        intent.setComponent(new ComponentName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity"));
        startActivity(intent);
    }
}

BDAdapter.java

public class BDAdapter{

    static final String TAG = "BDAdapter";
    static final String DATABASE_NAME = "dbEmpresas.db";
    static final int DATABASE_VERSION = 2;
    final Context context;
    int equiSel;

    DatabaseHelper DBHelper;
    SQLiteDatabase db;

    public BDAdapter(Context ctx){
        this.context = ctx;
        DBHelper = new DatabaseHelper(context);
    }

    private static class DatabaseHelper extends SQLiteOpenHelper{
        DatabaseHelper(Context context){
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }
        @Override
        public void onCreate(SQLiteDatabase db) {
            // TODO Auto-generated method stub  
        }
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            // TODO Auto-generated method stub
        }
    }

    public BDAdapter open() throws SQLException{
        db = DBHelper.getWritableDatabase();
        return this;
    }

    public void close(){
        DBHelper.close();
    }

    Cursor getEmpresas(){
        return db.rawQuery("SELECT nombre FROM empresas;", null);
    }

    Cursor getEnlace(String nombre) {
        return db.rawQuery("SELECT enlace FROM empresas where nombre='"+nombre+"';", null);
    }

    public int contEmp(){
        db = DBHelper.getReadableDatabase();
        Cursor cursor = db.rawQuery("SELECT count(*) FROM empresas;", null);
        int cont = cursor.getInt(0);
        db.close();
        return cont;
    }
}

我一直在搜索數小時,但是找不到任何有用的信息,請幫忙嗎?

日志貓

02-06 12:21:41.815: E/AndroidRuntime(962): FATAL EXCEPTION: main
02-06 12:21:41.815: E/AndroidRuntime(962): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.maps/com.example.maps.MainActivity}: android.database.sqlite.SQLiteException: no such table: empresas: , while compiling: SELECT nombre FROM empresas;
02-06 12:21:41.815: E/AndroidRuntime(962):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
02-06 12:21:41.815: E/AndroidRuntime(962):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
02-06 12:21:41.815: E/AndroidRuntime(962):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
02-06 12:21:41.815: E/AndroidRuntime(962):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
02-06 12:21:41.815: E/AndroidRuntime(962):  at android.os.Handler.dispatchMessage(Handler.java:99)
02-06 12:21:41.815: E/AndroidRuntime(962):  at android.os.Looper.loop(Looper.java:123)
02-06 12:21:41.815: E/AndroidRuntime(962):  at android.app.ActivityThread.main(ActivityThread.java:4627)
02-06 12:21:41.815: E/AndroidRuntime(962):  at java.lang.reflect.Method.invokeNative(Native Method)
02-06 12:21:41.815: E/AndroidRuntime(962):  at java.lang.reflect.Method.invoke(Method.java:521)
02-06 12:21:41.815: E/AndroidRuntime(962):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-06 12:21:41.815: E/AndroidRuntime(962):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-06 12:21:41.815: E/AndroidRuntime(962):  at dalvik.system.NativeStart.main(Native Method)
02-06 12:21:41.815: E/AndroidRuntime(962): Caused by: android.database.sqlite.SQLiteException: no such table: empresas: , while compiling: SELECT nombre FROM empresas;
02-06 12:21:41.815: E/AndroidRuntime(962):  at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
02-06 12:21:41.815: E/AndroidRuntime(962):  at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:91)
02-06 12:21:41.815: E/AndroidRuntime(962):  at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:64)
02-06 12:21:41.815: E/AndroidRuntime(962):  at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:80)
02-06 12:21:41.815: E/AndroidRuntime(962):  at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:46)
02-06 12:21:41.815: E/AndroidRuntime(962):  at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:42)
02-06 12:21:41.815: E/AndroidRuntime(962):  at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1345)
02-06 12:21:41.815: E/AndroidRuntime(962):  at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1315)
02-06 12:21:41.815: E/AndroidRuntime(962):  at com.example.maps.BDAdapter.getEmpresas(BDAdapter.java:49)
02-06 12:21:41.815: E/AndroidRuntime(962):  at com.example.maps.MainActivity.llenarCB(MainActivity.java:44)
02-06 12:21:41.815: E/AndroidRuntime(962):  at com.example.maps.MainActivity.onCreate(MainActivity.java:30)
02-06 12:21:41.815: E/AndroidRuntime(962):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
02-06 12:21:41.815: E/AndroidRuntime(962):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
02-06 12:21:41.815: E/AndroidRuntime(962):  ... 11 more

您尚未在數據庫中創建任何表! 看看這里,看看create table語句及其執行位置。 類似問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM