2012-03-09 3 views
2

сначала ... Я не хочу, чтобы изменить свой первичный ключ ....андроида обновление SQLite

и вот метод моей БД создать ....

public void onCreate(SQLiteDatabase db) { 

    String DATABASE_CREATE_TABLE = 
     "create table userData (" 
      + "_id INTEGER PRIMARY KEY AUTOINCREMENT," 
      + "HTTPorS TEXT," 
      + "IPHostName TEXT," 
      + "port TEXT," 
      + "userName TEXT," 
      + "password TEXT," 
      + "saveOption TEXT" 
     + ");"; 
    db.execSQL(DATABASE_CREATE_TABLE); 
} 

и это как я добавить строку в это

public long create(String HTTPorS, String IPHostName, String port, String userName, String password, String saveOption) { 
    ContentValues args = new ContentValues(); 
    args.put("HTTPorS", HTTPorS); 
    args.put("IPHostName", IPHostName); 
    args.put("port", port); 
    args.put("userName", userName); 
    args.put("password", password); 
    args.put("saveOption", saveOption); 
    return db.insert("userData", null, args); 
} 

Оба 2 метода вверх до работы нормально ... Но когда я хочу, чтобы изменить значение строк ... Я использую этот метод

public void update(long rowId,String httporS, String IP,String Port,String userName,String password) { 
    ContentValues args = new ContentValues(); 
    args.put("HTTPorS", httporS); 
    args.put("IPHostName", IP); 
    args.put("port", Port); 
    args.put("userName", userName); 
    args.put("password", password); 
    args.put("saveOption", "no use"); 
    db.update("userData", 
    args,    
    "_id=" + rowId,   
    null     
    ); 
} 

Он работает нормально, и правильные значения 「сделать」 получить в этом методе ...

но данные в децибелах не заменит

почему это?

благодарит за вашу помощь!

+0

Я думаю, ваша проблема с WhereClause вы дали. Проверьте это, возвращая значение int из вашего метода. –

+0

Вы уверены, что 'rowId' верен? – Caner

+0

Что возвращает 'db.update'? – Caner

ответ

0

_id является INTEGER

Ваш RowId должен быть изменен на целое обновить БД.

public void update(long rowId,String httporS, String IP,String Port,String userName,String password) 

долго -> Int

0

Вы получаете записываемый версию базы данных, как

SQLiteDatabase db = database.getWritableDatabase(); 

Также вы можете разделить ошибки вы получаете при попытке обновить строку?

+0

Я уже использую это .... SQLiteDatabase db = database.getWritableDatabase(); и нет сообщений об ошибке .... –

1
//decleration 
EventDataSQLHelper eventsData; 
    SQLiteDatabase dbx ; 
    SQLiteDatabase rdbx; 
    ContentValues values; 

//onCreate 

dbx = eventsData.getWritableDatabase();  
     rdbx = eventsData.getReadableDatabase(); 
     values=new ContentValues(); 

//updated values 
values2.put("clumnname1", updatedvalue1); 
values2.put("clumnname2", updatedvalue2); 
values2.put("clumnname3", updatedvalue3); 
values2.put("clumnname4", updatedvalue4); 
values2.put("clumnname5", updatedvalue5); 
... 
... 
... 

//delete query 

//specify the id of the record to be updated 
dbx.update("tablename", values2, "id="? , null); 
Смежные вопросы