rawquery выбрать в качестве входных данных базы данных - PullRequest
0 голосов
/ 12 октября 2011

Я хочу знать, как получить значение выбранного необработанного запроса

Cursor data = dbObject.rawQuery("SELECT _id FROM COMAPNY WHERE _id LIKE ?",
                 new String[] { "%" + val2 + "%" });

в качестве входных данных базы данных sqlite.я хочу выбрать номер (val2), а затем поместить это число в столбец handle.KEY_ID2.возможно ли это и как это сделать?

ПОЛНЫЙ КОД

База данных

package test.com;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class handle extends SQLiteOpenHelper {

     public static final String DB_NAME = "SHARE_DB";
     public static final String DB_COMPANYTABLE = "COMAPNY";
     public static final String DB_SHARETABLE = "SHARE";
     public static final int DB_VERSION = 1;
     public static final String KEY_ID = "_id";
     public static final String KEY_ID2 = "_id2";
     public static final String ROW_ID = "_id";
     public static final String COMPANY_NAME = "Name";
     public static final String COMPANY_SHAREP = "Price";
     public static final String COMPANY_SHAREV = "Volume";

    public handle(Context context, String name, CursorFactory factory,
            int version) {
        super(context, name, factory, version);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        db.execSQL(SCRIPT_CREATE_DATABASE);
        db.execSQL(SCRIPT_CREATE_DATABASE2);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        db.execSQL("DROP TABLE IF EXISTS " + DB_COMPANYTABLE);
        db.execSQL("DROP TABLE IF EXISTS " + DB_SHARETABLE);
        onCreate(db);
    }

    private static final String SCRIPT_CREATE_DATABASE = "create table " + DB_COMPANYTABLE + " (" 
                +KEY_ID + " integer primary key autoincrement, " 
                + COMPANY_NAME + " text not null);";

private static final String SCRIPT_CREATE_DATABASE2 = "create table " + DB_SHARETABLE + " (" 
                + ROW_ID + " integer primary key autoincrement, " 
                + KEY_ID2 + " integer, " 
                + COMPANY_SHAREP + " text not null, " 
                + COMPANY_SHAREV + " text not null);";
}

Activity1

private ListView.OnItemClickListener listContentOnItemClickListener
   = new ListView.OnItemClickListener(){

  @Override
  public void onItemClick(AdapterView<?> parent, View view, int position,
    long id) {
Company comid = new Company();
      Cursor cursor = (Cursor) parent.getItemAtPosition(position);
      int item_id = cursor.getInt(cursor.getColumnIndex(handle.KEY_ID));

               String item = String.valueOf(item_id);

           comid.setCompanyID(item);    

           startActivity(new Intent("android.intent.action.next"));
     }};

Activity2

    Company obj1 = new Company();
    String val1 = obj1.getCompanyID();

protected void saveRecord() {
    // TODO Auto-generated method stub
    conValue.put(handle.COMPANY_SHAREP, two.getText().toString());
    conValue.put(handle.COMPANY_SHAREV, three.getText().toString());
    conValue.put(handle.KEY_ID2, four.getText().toString());
    dbObject.insert(handle.DB_SHARETABLE, null, conValue);
}

На данный момент я должен ввести KEY_ID2, но я хочу, чтобы ... когда пользователь нажимает наСписок ACTIVITY1 ... он отправляет идентификатор строки как "val1", и я хочу, чтобы это значение было введено при нажатии кнопки ACTIVITY2

1 Ответ

0 голосов
/ 12 октября 2011

Нет прямого способа сделать это. Вам необходимо:

  1. Сделайте запрос к вашей базе данных, чтобы получить курсор,
  2. Переместить курсор на первый элемент,
  3. Получить строку / Int / независимо от курсора,
  4. Вставьте это значение с помощью вставки.

Но я вижу здесь более фундаментальную проблему: ваша база данных. никогда не следует полагаться на избыточно сохраненные данные!

Пожалуйста, взгляните на свою базу данных и проверьте, можете ли вы использовать отношение для установления связи между двумя значениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...