2017-11-24 19 views
0

私はランダムなIDを取得しようとしていますが、私はWORDTRとWORDENのインデックスを取得しようとしていますが、so.pleaseは私を助けません。idを使用してインデックスを取得する方法は?

public class DatabeseHelper extends SQLiteOpenHelper { 
public DatabeseHelper(Context c){ 
    super(c,"WORDS",null,1); 

    SQLiteDatabase db =this.getWritableDatabase(); 

} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    String sql="create table WORDS(ID integer primary key autoincrement,WORDTR TEXT,WORDEN TEXT)"; 
    db.execSQL(sql); 

} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)  { 
    db.execSQL("DROP TABLE IF EXISTS WORDS"); 
    onCreate(db); 
} 

public Cursor getDataRandom(){ 

    SQLiteDatabase db = this.getWritableDatabase(); 

    Cursor cursor = db.rawQuery("select * from ID ORDER BY RANDOM() LIMIT 1 ",null); 
    cursor.moveToFirst(); 

    int id = cursor.getInt(cursor.getColumnIndex("ID")); 


    return cursor; 
+0

@Kaizakiは、あなたのデータベースが作成されるか、またはされていませんチェックしていますか。? –

+0

@Tauqir私は反対したい。 id.butから行を得るコメントにたくさん感謝します。 – KAIZAKI

+0

@PankajMundraはいうまく働いた。 – KAIZAKI

答えて

0
public DatabeseHelper(Context c){ 
    super(c,"WORDS",null,1); 

    SQLiteDatabase db =this.getWritableDatabase(); 

} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    String sql="CREATE TABLE IF NOT EXISTS " + WORDS+ 
    "(" + 
    "ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE, " + 
    "WORDTR TEXT, WORDEN TEXT);"; 

    db.execSQL(sql); 

} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL("DROP TABLE IF EXISTS WORDS"); 
    onCreate(db); 
} 

公共int型getDataRandom(){

SQLiteDatabase db = this.getWritableDatabase(); 

    Cursor cursor = db.rawQuery("select * from WORDS ORDER BY RANDOM() LIMIT 1 ",null); 
    if (cursor.moveToFirst()) { 

    int id = cursor.getInt(cursor.getColumnIndex("ID")); 

} while (cursor.moveToNext()); 
    return id; 
1

テーブルを作成したときのテーブル名は「WORDS」ですが、どこにも存在しないテーブル名「ID」からデータを取得しようとしています。あなたはコード内の多くのミスを持って

正しいコードが

public Cursor getDataRandom(){ 

    SQLiteDatabase db = this.getWritableDatabase(); 

    Cursor cursor = db.rawQuery("select * from WORDS ORDER BY RANDOM() LIMIT 1 ",null); 
    cursor.moveToFirst(); 

    int id = cursor.getInt(cursor.getColumnIndex("ID")); 


    return cursor; 
} 
0

で、コメント

パブリッククラスDatabeseHelperに以下のコードを参照してくださいはSQLiteOpenHelper {

public DatabeseHelper(Context c){ 
    super(c,"WORDS",null,1); 
    // SQLiteDatabase db =this.getWritableDatabase(); 

} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    String sql="create table WORDS(ID integer primarykey autoincrement,WORDTR TEXT,WORDEN TEXT)"; 
    db.execSQL(sql); 

} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL("DROP TABLE IF EXISTS WORDS"); 
    onCreate(db); 
} 

は、ランダムなデータを選択して拡張します。

public Cursor getDataRandom(){ 

      SQLiteDatabase db = this.getWritableDatabase(); 

      // select * from WORDS not a ID 
      Cursor cursor = db.rawQuery("select * from WORDS ORDER BY RANDOM() LIMIT 1 ",null); 
      cursor.moveToFirst(); 

      // id is not used,not need to declare 
      int id = cursor.getInt(cursor.getColumnIndex("ID")); 


      // return a id not a cursor 
      return cursor; 
    } 
関連する問題