我使用hsqldb作为数据库。我创建了LmexPostParamDao,它有一个方法insertLmexPostParam(NameValuePostParamVO nameValuePostParamVO),它将在数据库中插入数据。为了测试这个方法,我使用JUnit测试在hsqldb中插入一些数据。
我的JUnit测试方法如下:
@Test
public void testInsertLmexPostParam(){
String lmexPostParamId = UUID.randomUUID().toString();
NameValuePostParamVO nameValuePostParamVO = new NameValuePostParamVO();
nameValuePostParamVO.setLmexPostParamId(lmexPostParamId);
nameValuePostParamVO.setParamName("adapter_id");
nameValuePostParamVO.setParamValue("7");
lmexPostParamDao.insertLmexPostParam(nameValuePostParamVO);
}
我的插入方法如下:
@Override
public void insertLmexPostParam(NameValuePostParamVO nameValuePostParamVO) {
String insertQuery = "insert into LMEX_POST_PARAM(lmex_post_param_id, param_name, param_value) values (?,?,?)";
String[] paramArr = { nameValuePostParamVO.getLmexPostParamId(), nameValuePostParamVO.getParamName(), nameValuePostParamVO.getParamValue()};
int update = adapterJdbcTemplate.update(insertQuery, paramArr);
System.out.println(update);
}
当我运行我的测试用例时,它返回1作为输出,这是adapterJdbcTemplate的结果。这意味着数据成功插入。但当我看到我的数据库时,它没有显示我插入的那一行。当我使用相同的值调试我的testcase方法时,它会给出一个异常:数据完整性违规异常。当我看到我的数据库时,它会在我的数据库中显示该行。会是什么问题。我不。当我看到代码时,看起来一切都很好。帮我解决这个问题。
谢谢
答案 0 :(得分:0)
检查您的CREATE TABLE语句以获取LMEX_POST_PARAM。 CHAR和VARCHAR类型必须定义为CHAR(N)和VARCHAR(N),N大到足以接受您插入的值。例如,VARCHAR(100)。
如果您的问题是数据库未显示成功插入,那么您应该使用WRITE_DELAY = 0或false创建数据库。有关您正在使用的版本,请参阅HSQLDB文档。