列名无效 - 错误

时间:2015-08-10 13:54:45

标签: java sql-server jdbc

我从结果集中获取值时收到此错误。

  

错误: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中不起作用?

4 个答案:

答案 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