2

我正在尝试使用以下类中的 ClearModel() 方法删除我输入到模型中的所有数据。

    public class JenaDatabaseHelper {

private Model model;
private Dataset dataset;

public Model getJenaModel(){
    if(model!=null){
        return model;
    }
    else{
        String directory = "JenaDatabase" ;
        try{
            dataset = TDBFactory.createDataset(directory);
            model = dataset.getNamedModel("DB");
            return model;
        }catch(Exception e){
            System.out.println("Error when retrieving model: "+e.getMessage());
        }              
    }
    return null;
}

public void SaveAndCloseModel(){
    if(model!=null && dataset!=null){
        model.commit();
        model.close();
        dataset.close();
    }
}

public void ClearModel(){
    if(model!=null && dataset!=null){
        model.removeAll();
        SaveAndCloseModel();
    }
}

但是当我重新启动应用程序并遍历语句时,没有任何内容被删除。

4

1 回答 1

1

我注意到如果为空,ClearModel它将默默地什么都不做。model在这种情况下,您可能希望在该条件上放置一个 else 分支以打印警告。例如,如果您创建一个新JenaDatabaseHelper实例并且不调用getJenaModel()初始化实例变量,则可能会发生这种情况。

事实上,考虑到未初始化变量的风险,我个人会将 的功能getJenaModel放入构造函数中。或者,您可以通过访问modelgetter 方法来懒惰地评估它们,该方法将首先检查model是否已初始化。

于 2013-04-18T08:11:03.240 回答