Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java getMetaData()或getString()不侦听SQL查询中的别名_Java_Jdbc - Fatal编程技术网

Java getMetaData()或getString()不侦听SQL查询中的别名

Java getMetaData()或getString()不侦听SQL查询中的别名,java,jdbc,Java,Jdbc,getMetaData()或getString()函数不侦听SQL查询中给定的别名。SQL查询成功执行 这是我查询的一部分:选择o.id作为o\u id,选择o.package\u id作为o\u package\u id,选择o.client\u id作为o\u client\u id,选择o.receiver\u id作为o\u receiver\u id, resultSet.getString(fieldname)仅适用于id、package\u id、client\u id等,它不适用

getMetaData()或getString()函数不侦听SQL查询中给定的别名。SQL查询成功执行

这是我查询的一部分:
选择o.id作为o\u id,选择o.package\u id作为o\u package\u id,选择o.client\u id作为o\u client\u id,选择o.receiver\u id作为o\u receiver\u id,

resultSet.getString(fieldname)
仅适用于
id
package\u id
client\u id
等,它不适用于
o.id
o.package\u id
o.client\u id
、或我在查询
o\u id
中给他们的字段名

这导致了一个问题,我有一个查询,其中有多个连接,具有双字段名


如何通过别名获取数据?

这与JConnector有关。 强制驱动程序url将useOldAliasMetadataBehavior设置为true(在v5.1.6中默认值为false)

应该是这样的:

url = "jdbc:mysql://localhost:3306/mydb?useOldAliasMetadataBehavior=true"

它与JConnector有关。 强制驱动程序url将useOldAliasMetadataBehavior设置为true(在v5.1.6中默认值为false)

应该是这样的:

url = "jdbc:mysql://localhost:3306/mydb?useOldAliasMetadataBehavior=true"

哪个数据库和驱动程序?当然,您可以始终按位置属性进行提取。
o.id
不能用作列名,因为该列仍被称为
id
。JDBC驱动程序(不是“Java”)是否与列别名一起工作取决于驱动程序(有时取决于驱动程序版本)@Kayaman InnoDB,JConnector 5.1用于检查返回的列“name”。如果没有提供javadoc定义的别名(AS),则它将是别名或列名。作为信息,文档状态将使用标签(如果提供了别名)来获取正确的列。因此,除非InnoDB没有完全实现接口,否则这应该没问题。请显示您使用的代码。正如AxelH所指出的,您可能正在使用
getColumnName
而不是
getColumnLabel
。通过列标签(!)而不是列名从结果集中检索值。哪个数据库和驱动程序?当然,您可以始终按位置属性进行提取。
o.id
不能用作列名,因为该列仍被称为
id
。JDBC驱动程序(不是“Java”)是否与列别名一起工作取决于驱动程序(有时取决于驱动程序版本)@Kayaman InnoDB,JConnector 5.1用于检查返回的列“name”。如果没有提供javadoc定义的别名(AS),则它将是别名或列名。作为信息,文档状态将使用标签(如果提供了别名)来获取正确的列。因此,除非InnoDB没有完全实现接口,否则这应该没问题。请显示您使用的代码。正如AxelH所指出的,您可能正在使用
getColumnName
而不是
getColumnLabel
。通过列标签(!)而不是列名从结果集中检索值。