Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java me codenameone存储器中的读写对象_Java Me_Storage_Lwuit_Codenameone - Fatal编程技术网

Java me codenameone存储器中的读写对象

Java me codenameone存储器中的读写对象,java-me,storage,lwuit,codenameone,Java Me,Storage,Lwuit,Codenameone,我正在开发一个基于codenameone的j2me应用程序。我实现了一些代码,现在我想把数据库添加到我的应用程序中。经过大量搜索,我发现codenameone的存储类简化了移动应用程序中的数据库概念 在这个应用程序中,我为每个实体(如person、city等)创建一个类,并添加“read”和“write”方法来读取和写入数据 某些实体类有2个或更多字段。所以我必须用存储类保存和读取它们 我该怎么做 以下是我的示例代码: package com.x.database; import com.co

我正在开发一个基于codenameone的j2me应用程序。我实现了一些代码,现在我想把数据库添加到我的应用程序中。经过大量搜索,我发现codenameone的存储类简化了移动应用程序中的数据库概念

在这个应用程序中,我为每个实体(如person、city等)创建一个类,并添加“read”和“write”方法来读取和写入数据

某些实体类有2个或更多字段。所以我必须用存储类保存和读取它们

我该怎么做

以下是我的示例代码:

package com.x.database;

import com.codename1.io.Storage;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.Iterator;

public class Person {

    public Person(){
    }
    public Person(int pID, String pPersonNumber){
        ID = pID;
        PersonNumber = pPersonNumber;
    }

    public static String PERSON = "Person";

    private Storage store;
    private int ID;

    public int getID(){
        return ID;
    }

    public void setID(int pID){
        ID = pID;
    }

    private String PersonNumber;

    public String getPersonNumber(){
        return PersonNumber;
    }

    public void setPersonNumber(String pPersonNumber){
        PersonNumber = pPersonNumber;
    }

    public int getLastKeyNumber(){
        if(store == null) {
            store = Storage.getInstance();
        }

        Hashtable depHash = (Hashtable)store.readObject(PERSON);
        ArrayList<String> keyArray = (ArrayList<String>)depHash.keys();

        int i = 0;
        for (Iterator<String> it = keyArray.iterator(); it.hasNext();) {
            int tmp = Integer.parseInt(it.next());
            i = i < tmp ? tmp : i;
        }

        return i;
    }

    public void write(Person pPerson){
        if(store == null) {
            store = Storage.getInstance();
        }

        if(!store.exists(PERSON)) {
            Hashtable depHash = new Hashtable();
            try {
                depHash.put("0", pPerson);
            } catch (IOException ex) {
                System.out.println(ex.getMessage());
            }
            store.writeObject(PERSON, depHash);
        }
        else {
            Hashtable depHash = (Hashtable)store.readObject(PERSON);

            ArrayList<Person> depArray = (ArrayList<Person>)depHash.keys();

            for (Iterator<Person> it = depArray.iterator(); it.hasNext();) {
                Person tmp = it.next();

                if(!tmp.getPersonNumber().equals(pPerson)) {
                    depHash.put(String.valueOf(getLastKeyNumber()), pPerson.getPersonNumber());
                    store.writeObject(Person depHash);
                }
            }
        }
    }

    public ArrayList<Person> readAll(){
        Storage store = Storage.getInstance();

        if(!store.exists(PERSON)) {
            Hashtable depHash = (Hashtable)store.readObject(PERSON);

            return (ArrayList<Person>)depHash.elements();
        }
        return new ArrayList<Person>();
    }
}
package com.x.database;
导入com.codename1.io.Storage;
导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.Hashtable;
导入java.util.Iterator;
公共阶层人士{
公众人士(){
}
公众人物(整数pID,字符串编号){
ID=pID;
PersonNumber=PersonNumber;
}
公共静态字符串PERSON=“PERSON”;
私人仓库;
私有int-ID;
公共int getID(){
返回ID;
}
公共void setID(int-pID){
ID=pID;
}
私有字符串PersonNumber;
公共字符串getPersonNumber(){
返回人号;
}
public void setPersonNumber(字符串personNumber){
PersonNumber=PersonNumber;
}
public int getLastKeyNumber(){
if(store==null){
store=Storage.getInstance();
}
Hashtable depHash=(Hashtable)store.readObject(PERSON);
ArrayList keyArray=(ArrayList)depHash.keys();
int i=0;
for(迭代器it=keyArray.Iterator();it.hasNext();){
int tmp=Integer.parseInt(it.next());
i=i
在这段代码中,我在存储器上的写和读对象上有一个错误

如何在存储器中写入一个对象并再次读取


提前感谢。

您可以将
向量
哈希表
存储在存储器中,并将其按您喜欢的深度嵌套,例如:

Vector v = new Vector();
Hashtable content = new Hashtable();
content.put("A", ...);
content.put("B", ...);
v.addElement(content);
等等。。。您可以添加更多散列,它们可以包含字符串、数字或字节数组


或者,您可以实现Codename One Externalizable接口,该接口允许您将任意类写入存储器。不过,这提出了一个要求,您需要调用
Util.register
,以便注册可外部化的类名。在“告密者”演示中有一个这样的示例

谢谢,谢了,我会照你说的去做的。