2015-01-09 4 views
-3

В моем проекте я буду обновлять searchtag в базе данных с помощью этого запросаобновления rawQuery, чтобы база не работает на андроид

 public void updatesearchtag(){ 
     SQLiteDBHelper sqLiteDBHelper = new SQLiteDBHelper(context.getApplicationContext()); 
     Cursor crs=sqLiteDBHelper.getWritableDatabase().rawQuery("update shoply_coupon set searchTag=(Select SearchTag from shoply_retailer_master where retailerId=shoply_coupon.retailerID)",null); 
//Cursor crs=sqLiteDBHelper.getWritableDatabase().execSQL("update shoply_coupon set searchTag=(Select SearchTag from shoply_retailer_master where retailerId=shoply_coupon.retailerID)"); 
} 

но запрос не работает, возможно, я знаю, что ошибка я делая здесь

+0

разместить свои журналы .. – R9J

+0

я не получаю сообщение об ошибке в журнале – Jagan

ответ

1

Используйте execSQL(), а не rawQuery() для SQL, как это.

rawQuery() просто компилирует SQL, но не запускает его. Он запускается только при перемещении курсора. execSQL() как компилирует, так и запускает SQL.

Также используйте getWritableDatabase(), а не getReadableDatabase() для уточнений.

+0

общественности недействительным updatesearchtag() { SQLiteDBHelper sqLiteDBHelper = новый SQLiteDBHelper (context.getApplicationContext()); Курсор crs = sqLiteDBHelper.getReadableDatabase(). ExecSQL ("update shoply_coupon set searchTag = (выберите SearchTag из shoply_retailer_master, где retailerId = shoply_coupon.retailerID)", null); } он показывает ошибку plz help – Jagan

+0

... и какова ошибка? Измените вопрос, а не отправляйте код и т. Д. В комментариях. – laalto

+0

как использовать этот execSQL() в моем кодировании – Jagan

0

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

Я предлагаю сделать Dbclass seprate в вашем коде и использовать такие функции. это простой способ сделать все, такие как обновление, удаление, выберите и т.д.

public boolean Update(String SearchTag , ContentValues values) 
{ 
    if (db.update(TABLE, values, "SearchTag = '"+YourValue+"'", null) > 0) 
    { 
    return true ; 
    } 
    return false ; 
} 
+0

Да, вам нужно использовать execSQL, это хорошо, как сказано laalto, но процесс, который я поделил, вы можете использовать rawquery как Что ж. – Black

0

Использование

sqLiteDBHelper.getWritableDatabase() 

вместо

sqLiteDBHelper.getReadableDatabase() 

Поскольку вы пытаетесь записать в базу данных, которая есть в запись предотвращение режим.

+0

Я использовал getWritableDatabase() до сих пор нет данных – Jagan

+0

сделал ли вы выполнение запроса в браузере sqlite? Кажется, в вашем запросе есть некоторая ошибка – R9J

+0

в браузере, она отлично работает, пожалуйста, помогите мне в этом – Jagan

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