我正在尝试使用以下类中的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();
}
}
但是当我重新启动应用程序并遍历语句时,没有删除任何内容。
答案 0 :(得分:1)
我注意到如果ClearModel
为空,model
将默默无效。您可能希望在该条件上放置else分支以在该情况下打印警告。例如,如果您创建新的JenaDatabaseHelper
实例并且不首先调用getJenaModel()
初始化实例变量,则可能会发生这种情况。
事实上,考虑到有未初始化变量的风险,我个人会将getJenaModel
的功能放入构造函数中。或者,您可以通过getter方法访问model
来懒惰地评估它们,这将首先检查model
是否已初始化。