我从结果集中获取值时收到此错误。
错误:com.microsoft.sqlserver.jdbc.SQLServerException:列名company.short_name无效
案例1:
select company.short_Name,location_name from company,location;
这个查询在SQL Server上执行正常但在我的java代码中,当我尝试检索resultset.getString("company.short_name");
之类的值时,这会给出上述错误。
案例2:
select company.short_Name short_name,location_name from company,location;
并检索resultset.getString("short_name");
之类的值,而不是数据库MySQL和MSSQL都能正常工作。
我正在将我的数据库从MySQL迁移到MSSQL。上面的案例1在MySQL中运行正常,但为什么它在MSSQL中不起作用?
答案 0 :(得分:3)
resultset.getString("company.short_name");
在这里是错误的。尝试获取应用程序中的数据时,无需指定完全限定名称。只需指定列名称resultset.getString("short_name");
。
原因即使您说select company.short_Name ...
将列名称查询为short_Name
,因为这是表格架构中定义的内容。
如果两个表都有相同的列可能导致歧义,请为列提供别名,如
select company.short_Name as company_shortname,
location.short_Name as location_shortname,
location.location_name from company,location;
答案 1 :(得分:1)
当你这样做时
select company.short_Name,location_name from company,location;
此查询超出列名称short_Name,resultSet也将具有short_Name
由于company.short_name不存在,您会收到错误。
答案 2 :(得分:0)
函数resultset.getString(String columnLabel)
以Java编程语言中String的形式检索此ResultSet对象的当前行中指定列的值。
参数:
columnLabel使用SQL AS子句指定的列的标签。如果未指定SQL AS子句,则标签是列的名称
返回:
列值;如果值为SQL NULL,则返回的值为null 抛出: SQLException - 如果columnLabel无效;如果发生数据库访问错误或在关闭的结果集上调用此方法
在函数resultset.getString(String columnLabel)
中,arg
是用于执行sql的列名,语句select company.short_Name,location_name from company,location;
将获得一个结果集,其中包含表头short_Name,location_name
答案 3 :(得分:0)
将以下内容添加到application.properties文件中 spring.jpa.hibernate.naming.physical-strategy = org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl