2013-10-01 3 views
0

Используя этот пример (https://stackoverflow.com/a/9109728/2808099) Я подключил свою базу данных. Но я не смог организовать поиск в этой базе данных. Я пытаюсь передать запрос из EditText и отобразить результат в textView (или ListView).Простой поиск из своей собственной базы данных sqlite

MainActivity

public void LoadAddress(View v) 
    { 

     searchAddress = editTextSearch.getText().toString(); 

     TestAdapter mDbHelper = new TestAdapter(this); 
     mDbHelper.createDatabase(); 
     mDbHelper.open(); 


     Cursor testdata = mDbHelper.getTestData("SELECT * FROM Address " +searchAddress+"';", null); 
     String address=testdata.getString(1).toString(); 
     textView.setText(address); 
     mDbHelper.close(); 
    } 

TestAdapter

public Cursor getTestData(String s, Object o) 
{ 

    try 
    { 

     String sql ="SELECT * FROM Address"; 

     Cursor mCur = mDb.rawQuery(sql, null); 
     if (mCur!=null) 
     { 
      mCur.moveToNext(); 
     } 
     return mCur; 
    } 
    catch (SQLException mSQLException) 
    { 
     Log.e(TAG, "getTestData >>"+ mSQLException.toString()); 
     throw mSQLException; 
    } 
} 

Независимо от содержания EditText, в первой строке вывода из базы данных

+0

Что вы пробовали, что конкретно ваша проблема, и что вы ожидаете? (Оставьте его * в вопросе * пожалуйста) – gparyani

+0

«Вопросы, требующие кода, должны ** демонстрировать минимальное понимание проблемы, которая решается **. Включите попытки решения, почему они не сработали и результаты * ожидаемые *. – gparyani

+0

Я был бы счастлив, но мой код стал очень запутанным (после нескольких недель попыток поиска), и я вернулся к началу. – user2808099

ответ

0

Вы всегда вызова «выберите * от адреса ". Это ВСЕГДА спросит ВСЕ.

String userInp = editTextSearch.getText().toString(); 

String query = "select * from Addresses where address = " + userInp; 

Cursor cursor= mDbHelper.getDb().rawQuery(query, null); 

if (null != cursor) 
    cursor.moveToFirst(); 

String output = cursor.getString(1); 

Хороший учебник для Android является: http://www.androidhive.info/2011/11/android-sqlite-database-tutorial/

Вы можете рассмотреть возможность использования запроса с параметрами, а не сырой SQL для таких простых запросов.

Вы можете узнать здесь SQL: http://www.w3schools.com/sql/

+0

Тогда почему я получаю только первую строку из базы данных? И getDb(): java: метод getTestData в классе com.network.CableDiag.TestAdapter не может применяться к заданным типам; required: java.lang.String, java.lang.Object found: no arguments Причина: фактические и формальные списки аргументов различаются по длине – user2808099

+0

, если вы делаете это выше, вы перемещаете курсор только в первую позицию. Также getDb() было упрощением. Вы пишете CableDiag.TestAdapter ..... обратите внимание, что в вашем тестовом адаптере есть строка mDb.rawQuery(), поэтому у вас есть db. Я просто передал db до вашего основного класса через то, что было бы типичным методом getter в большинстве обычных классов. – Alex

Смежные вопросы