2009-03-30 2 views
0

У меня есть этот код, который я сократил до самых важных бит, которые, как мне кажется, влияют на результат, но в основном у меня есть ошибка в отношении байтов. Я не уверен, почему, потому что этот код работает в другой программе, поскольку я заимствовал код. Это предназначено для извлечения данных из хранилища записей с помощью кнопки извлечения, а затем обновления при изменении с помощью кнопки обновления, но я не могу заставить ее работать.Помогите с проблемой обновления RecordStore в java j2me?

Может кто-нибудь, пожалуйста, помогите или назовите меня в полезном учебнике по обновлению записей?

благодаря

private RecordStore rs; 

    Update = new Form("Update"); 
    Update.addCommand(new Command("Home", Command.BACK, 0));  
    cmRetrieve = new Command("Retrieve", Command.SCREEN, 1); 
    cmUpdate = new Command("Update", Command.SCREEN, 2); 
    tfRecID = new TextField("Record ID:", "", 8, TextField.NUMERIC); 
    txtName = new TextField("Name of Event: ", null, 15, TextField.ANY); 

    Update.append(tfRecID); 
    Update.append(txtName); 
    Update.addCommand(cmRetrieve); 
    Update.addCommand(cmUpdate); 
    Update.setCommandListener(this); 


    String str; 
    byte bytes[]; 
    int recID; 

else 
    if (c.getLabel().equals("Retrieve")) 
    { 
      recID = Integer.parseInt(tfRecID.getString()); 
      bytes = rs.getRecord(recID); 
      str = new String(bytes); 
      int idx = str.indexOf(";"); 
      txtName.setString(str.substring(0, idx)); 


    } 
    else 
    if(c.getLabel().equals("Update")) 
    { 
      recID = Integer.parseInt(tfRecID.getString()); 
      str = txtName.getString() + ":"; 
      bytes = str.getBytes(); 
      rs.setRecord(recID, bytes, 0, bytes.length); 

    } 

ответ

0

http://developers.sun.com/mobility/midp/articles/databaserms/ дает хороший учебник по RMS.

Из того, что я вижу без запуска кода, неверен индекс конца, переданный в setRecord. Вам нужно изменить:

rs.setRecord(recID, bytes, 0, bytes.length); 

к:

rs.setRecord(recID, bytes, 0, bytes.length-1); 
0

я не thisk это проблема. rs.setRecord (recID, bytes, 0, bytes.length); Последний параметр - длина байтов

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