在blackberry sqlite中执行以下代码时,i得到异常"无法准备已准备好的语句"
public Department[] getDepartment()
{
Department[] department = null;
try
{
database = DatabaseFactory.open(myURI);
Statement st = database.createStatement("SELECT code, name, status FROM Department");
st.prepare();
Cursor c = st.getCursor();
Row r;
int i = 0;
department = new Department[i];
while(c.next())
{
r = c.getRow();
i++;
Department dept = (Department) r.getObject(i);
department[i] = dept;
}
st.close();
database.close();
}
catch ( Exception e )
{
System.out.println("Exception occured --------------" +e.getMessage());
}
return department;
}
任何人都知道这个的解决方案
st.prepare()
只有在语句未准备好的情况下才是必需的,这意味着:
- 语句引用外部变量
- 语句引用一个计算变量
在这种情况下,两者都不是,因此该语句是多余的。
参考
-
SQLite:文件历史-准备.c
-
启用缓存时收到"重新准备已准备好的查询"警告·Issue#581·Netflix/astyanax·GitHub
-
SQLite:查看票证-重新准备错误总是作为SQLite_SCHEMA 返回