2017-01-31 5 views
0

Привет, я разрабатываю базовый проект, похожий на словарь. Я добавлю несколько английских слов и турецкий смысл в базу данных, я получаю только «словарные» данные из db. Я хочу получить его id и турецкий смысл. Как я могу это сделать? Кроме того, Я не знаю других нулей в скобке запроса. Как я могу получить информацию для этого.Использование запроса случайно

это дб код:

public class DataBase extends SQLiteOpenHelper { 
private static final int DATABASE_VERSION = 1; 
private static final String DATABASE_NAME = "DBWORDS"; 
private static final String TABLE_NAME = "WTABLE"; 
private static final String ID ="ID"; 
private static final String WORD = "WORD"; 
private static final String WORD_TR1 = "TURKCE_1"; 


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

public DataBase(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { 
    super(context, name, factory, version); 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    String CREATE_DBTABLE = "CREATE TABLE " + TABLE_NAME + "(" + ID +" INTEGER PRIMARY KEY AUTOINCREMENT," +WORD+ 
      " TEXT," +WORD_TR1+" TEXT" + " )"; 
    db.execSQL(CREATE_DBTABLE); 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    String TABLE_DELETE = "DROP TABLE IF EXISTS" + TABLE_NAME ; 
    db.execSQL(TABLE_DELETE); 
    onCreate(db); 

} 

public long addRecord(Words words){ 
    SQLiteDatabase sqLiteDatabase = this.getWritableDatabase(); 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put(WORD,words.getWORD()); 
    contentValues.put(WORD_TR1,words.getTR1()); 
    long status = sqLiteDatabase.insert(TABLE_NAME,null,contentValues); 
    sqLiteDatabase.close(); 
    return status; 
} 
public List<Words> allRecords(){ 
    List<Words> wordsList = new ArrayList<>(); 
    String sql_query = "SELECT *FROM " + TABLE_NAME; 
    SQLiteDatabase sqLiteDatabase =this.getWritableDatabase(); 
    Cursor cursor =sqLiteDatabase.rawQuery(sql_query,null); 
    if(cursor.moveToFirst()){ 
     Words words =null; 
     do{ 
      words = new Words(); 
      words.setID(cursor.getInt(0)); 
      words.setWORD(cursor.getString(1)); 
      words.setTR1(cursor.getString(2)); 
      wordsList.add(words); 
     }while (cursor.moveToNext()); 
    } 
    return wordsList; 
} 

public String getRandomQuote(){ 
    SQLiteDatabase sqLiteDatabase = this.getWritableDatabase(); 
    Cursor cursor = sqLiteDatabase.query(TABLE_NAME + " ORDER BY RANDOM() LIMIT 1",new String[] 
      {WORD},null,null,null,null,null); 
    if(cursor.moveToFirst()){ 
     return cursor.getString(cursor.getColumnIndex(WORD)); 
    } 
    else 
     return "nothing"; 
} 

Основная деятельность:

btnStart.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(getApplicationContext(),WordsActivity.class); 
      DataBase dataBase = new DataBase(getApplicationContext()); 
      String random = dataBase.getRandomQuote(); 
      intent.putExtra("random",random); 
      startActivity(intent); 
     } 
    }); 

слова активность:

 textView = (TextView)findViewById(R.id.textView); 
     Intent intent= getIntent(); 
     String random =intent.getStringExtra("random"); 
     textView.setText("Number : "+ random); 

После того, что я получил "Привет" в тексте. Я хочу «Привет» «Мерхаба» «21».

+0

часть Цель намерения = getIntent(); Строка random = intent.getStringExtra ("random"); textView.setText ("Number:" + random); - это еще одно мероприятие. –

+0

Google ** андроидный запрос SQlite ** встречается с первым соответствием [SQLiteDatabase] (https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html). A ** find ** в этом вопросе ** ** включает [запрос] (https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#query%28boolean,%20java.lang. String,% 20java.lang.String [],% 20java.lang.String,% 20java.lang.String [],% 20java.lang.String,% 20java.lang.String,% 20java.lang.String,% 20java .lang.String% 29). – MikeT

+0

Как вы ожидаете, что кто-то придумает ответ, учитывая, что большинство, если таковые имеются, не обладают какой-либо магической силой, которая сообщает нам схему/структуру базы данных/таблицы (таблиц)/столбцов (столбцов), где хранятся ваши данные ? Я бы предложил изменить ваш вопрос, включив всю соответствующую информацию. Все, что мы знаем, это то, что у вас есть столбец WORD, у вас, вероятно, есть столбец с уникальным значением, так как вы укажете id; при догадках, и только догадка может быть _id. Это все, что ты, кажется, сказал. – MikeT

ответ

0

Вы только получаете WORD из таблицы в запросе. Вы должны получить WORD_TR1 (при условии, что это перевод) и ID. Поэтому вам нужно указать, чтобы запрос возвращал эти столбцы. Затем соедините их с возвращаемой строкой. Все это в getRandomQuote способ.

например.

public String getRandomQuote(){ 
    SQLiteDatabase sqLiteDatabase = this.getWritableDatabase(); 
    Cursor cursor = sqLiteDatabase.query(TABLE_NAME + " ORDER BY RANDOM() LIMIT 1",new String[] 
      {WORD, WORD_TR1, ID},null,null,null,null,null); 
    if(cursor.moveToFirst()){ 
     return cursor.getString(cursor.getColumnIndex(WORD)) + 
     cursor.getString(cursor.getColumnIndex(WORD_TR1)) + 
     cursor.getString(cursor.getColumnIndex(ID)); 
    } 
    else 
     return "nothing"; 
} 

Я думаю, что это то, что вы хотите (примечание не проверено, поэтому могут быть некоторые ошибки).

+0

Спасибо, Майк, что работает. –

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