2016-06-13 6 views
-1

WHERE句の整数を使用して行を選択するSQLクエリを作成するにはどうすればよいですか?WHERE句をSELECTクエリに追加するにはどうすればよいですか?

以下は、クエリを使用するコードですが、これは機能していません(結果は返されません)。

public Cursor forEditPurpose(int pos){ 

    db=this.getReadableDatabase(); 
    Cursor res = db.rawQuery("SELECT name,phone FROM mecontact1 where _id = " + pos + "", null); 

    return res; 

} 

これは私が必要としているすべての操作を実行し、私のデータベース全体のコードです:

public class ContactDatabase extends SQLiteOpenHelper { 
    SQLiteDatabase db; 
    public static final String DATABASE_NAME="totalContact1.db"; 
    public static final String TABLE_NAME="mecontact1"; 
    public static final String NAME="name"; 
    public static final String PHONE="phone"; 
    public static final String UID="_id"; 


    public ContactDatabase(Context context) { 
     super(context, DATABASE_NAME, null, 1); 

    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     try { 
      db.execSQL("create table mecontact1" + 
        "(_id integer primary key , name text, phone text)"); 
     }catch(android.database.SQLException e){ 
       System.out.println("table create nhi ho rha"); 
     } 
    } 

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

    public void insertContact(String nam,String mob,int autocrement){ 

     db=this.getWritableDatabase(); 
     ContentValues contentValues=new ContentValues(); 

     contentValues.put(NAME,nam); 
     contentValues.put(PHONE,mob); 
     contentValues.put(UID,autocrement); 

     db.insert(TABLE_NAME, null, contentValues); 
     db.close(); 
    } 

    public Cursor showData(){ 

     db=this.getReadableDatabase(); 
     Cursor res = db.rawQuery("SELECT * FROM mecontact1", null); 
     return res; 

    } 

    public Cursor nameData(String dataName){ 

     db=this.getReadableDatabase(); 
     Cursor res = db.rawQuery("SELECT * FROM mecontact1 WHERE name = '"+dataName+"'", null); 
     return res; 

    } 

    public Cursor phoneData(String dataNumber){ 

     db=this.getReadableDatabase(); 
     Cursor res = db.rawQuery("SELECT * FROM mecontact1 WHERE phone = '"+dataNumber+"'", null); 
     return res; 

    } 

    public Cursor phoneName(){ 

     db=this.getReadableDatabase(); 
     Cursor res = db.rawQuery("SELECT * FROM mecontact1 ", null); 
     return res; 

    } 

    public void deleteContact(String d,int pos){ 
     db=this.getWritableDatabase(); 

     db.execSQL("DELETE FROM "+ TABLE_NAME + " WHERE " + UID + " = " + pos +""); 
     db.execSQL("UPDATE " + TABLE_NAME + " set " + UID + " = (" + UID + "-1) where " + UID + " > " + String.valueOf(pos)); 

    } 

    public Cursor forEditPurpose(int pos){ 

     db=this.getReadableDatabase(); 
     Cursor res = db.rawQuery("SELECT name,phone FROM mecontact1 where _id = " + pos + "", null); 

     return res; 

    } 
} 
+1

**仕事していないということを**あなたはどういう意味ですか?詳細を教えてください! –

+0

@Prera​​kSolaこのクエリは行を返さない –

+0

@Prera​​kSolaはこの正しいクエリですか? –

答えて

0

あなたが試すことができます。

public Cursor forEditPurpose(int pos){ 

    db=this.getReadableDatabase(); 
    //don't forget the ? parameter in the selection 
    Cursor res = db.query(tableName,new String[]{"name","phone"},"_id =?",new String[]{""+pos},null,null,null); 
    return res; 

    } 
+0

ありがとう、URのクエリの作業 –

+0

これを投票するための理由は何ですか? –

+0

なぜあなたもこのansでも投票して私の問題を解決しています。私はこの助けをありがとうと言います。マリック・ラクシャンは私のものではない –

0

私はあなたが、これは完全な例ですが、あなたのコード内であなたはおそらくcursor.moveToFirstを()不足しているクエリ結果のカーソルを返すようにしたいと仮定しています。

public Cursor getById(int _id){ 
    SQLiteDatabase db = this.getReadableDatabase(); 

    String selectQuery = "SELECT columns_to_return FROM table_name WHERE column_name = " + _id; 
    Cursor c = db.rawQuery(selectQuery, null); 
    c.moveToFirst(); 

    return c; 
} 

さらに詳しい説明が必要な場合やお気軽にお尋ねください。

+0

@van Marincicはまさに仲間です –

+0

私はあなたを助けることができてうれしいです:)。ちなみに、より良い練習は、カーソル以外のオブジェクトを返す。 –

+0

すべてのことに感謝します –

関連する問題