【发布时间】:2020-04-23 07:08:33
【问题描述】:
我正在尝试从 MySQL 数据库中获取表的 ArrayList。从我读过的文章来看,下面的代码应该可以工作,但它没有。
private ArrayList<String> makeTableArray(String dbName){
ArrayList<String> stringArr = new ArrayList<>();
try(Session session = ServerConnect.getSessionFactory().openSession()){
String query = "show tables from :dbName";
NativeQuery nativeQuery = session.createNativeQuery(query);
nativeQuery.setParameter("dbName", dbName);
List list = nativeQuery.list();
for(Object database: list){
stringArr.add(String.valueOf(database));
}
}
return stringArr;
}
我使用数据库 sakila 得到的错误是:
错误:您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 1号线''sakila''附近
如果我将查询与 "show tables from " + dbName; 之类的 dbName 连接起来,我可以让它工作,但如果我设置参数,它就不起作用。
【问题讨论】:
-
您不能对数据库对象使用参数,例如表名。
标签: java mysql hibernate nativequery