我是学习HIBERNATE和SQL的新手。我想要一个查询来计算表中可用的列数。请帮我完成这个任务。
我尝试了以下查询,但是我收到批量操作异常。
谢谢。
Query colQuery = session.createSQLQuery("SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema =:'dn' AND table_name=:'tn'");
colQuery.setString("dn", "abc");
colQuery.setString("tn", "store_data");
int count=colQuery.executeUpdate();
答案 0 :(得分:0)
我发现您的代码存在一些问题。首先,原生查询中的命名参数不会使用单引号,即使用:dn
和不 :'dn'
。接下来,您尝试对SELECT
查询执行更新。这也是错误的,因为您没有更新任何记录,只需要调用colQuery.list()
即可获取结果集。最后,我认为您需要使用Query#setParameter()
为参数指定值。尝试使用此代码:
Query colQuery = session.createSQLQuery("SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema=:dn AND table_name=:tn");
colQuery.setParameter("dn", "abc");
colQuery.setParameter("tn", "store_data");
List<Object[]> rows = colQuery.list();
int rowCount = ((Integer) rows.get(0)[0]).intValue();
请注意,我访问了结果集的第一行,以及第一行中的第一行(也是唯一一列)来获取计数。