我正在使用HSQLDB并尝试在查询中运行包含NOLOCK
的select语句。
当语句被执行时,会抛出BadSqlGrammarException
。
有没有办法解决这个问题,因为该命令与SQL Server运行良好?
答案 0 :(得分:0)
a_horse_with_no_name的评论是正确的:
HSQLDB不支持NOLOCK。如果您需要在语句中使用它,则需要针对真实事物(SQL Server)运行测试
为了澄清这一点, private Button getTouchedButton(MotionEvent event) {
for(int i=0; i<myGridView.getChildCount(); i++) {
Rect buttonRect = new Rect()
Button child = (Button)mGridView.getChildAt(i);
child.getHitRect(buttonRect)
if (child.contains(Math.round(event.rawX), Math.round(event.rawY))){
return child;
}
}
return null;
}
是一个特定于SQL Server的关键字,用于指定数据库如何表现的提示。它甚至在Stack Overflow上有自己的标记nolock:
SQL Server表提示,可用于防止查询发出共享读锁。虽然经常用于阻止查询阻止其他查询,但它也容易受到脏读和其他潜在数据问题的影响。
因此,包含此关键字的SQL查询对HyperSQL无效。
你能做的是:
NOLOCK
。如果没有更多的知识,这将如何影响您的应用程序。作为旁注,HyperSQL fully supports the SQL specification:
HyperSQL 2.x支持SQL标准92,1999,2003,2008和2011定义的SQL方言。