Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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 jsp-jstl-sql在mysql中的奇怪行为_Java_Mysql_Jsp_Stored Procedures_Jstl - Fatal编程技术网

Java jsp-jstl-sql在mysql中的奇怪行为

Java jsp-jstl-sql在mysql中的奇怪行为,java,mysql,jsp,stored-procedures,jstl,Java,Mysql,Jsp,Stored Procedures,Jstl,在mysql中,我有一个存储过程,其sql类似: select firstname as i_firstname , lastname as i_lastname from roleuser where user_id = uid ; 我使用jstl代码来获取值:- <sql:query var="comm_codes" dataSource="jdbc/myDatasource"> call sp_select_username(?); <sql:para

在mysql中,我有一个存储过程,其sql类似:

select firstname as i_firstname , lastname as i_lastname from roleuser 
where user_id = uid ;
我使用jstl代码来获取值:-

<sql:query var="comm_codes" dataSource="jdbc/myDatasource">
    call sp_select_username(?);
    <sql:param>${user_id}</sql:param>
</sql:query>

<c:forEach var="rows" items="${comm_codes.rows}">
    ${rows.i_firstname} ${rows.i_lastname}
</c:forEach>

调用sp_选择_用户名(?);
${user_id}
${rows.i_firstname}${rows.i_lastname}
但是此代码不会返回任何内容,除非将上述代码${rows.i_firstname}替换为${rows.firstname}时,我得到了正确的值

jstl有什么问题吗,这是可复制的还是我的错

问题也张贴在网上


谢谢

我知道这是一篇老文章,但我也遇到了这个问题。这里讨论的是:

重要的是,mysql论坛上的海报表明

ResultSetMetaData.getColumnName()将返回列的实际名称,(如果存在)

这提供了一种解决方法-防止列名存在,以便必须使用别名。例如,可以将原始海报的存储过程修改为

select concat(first name,'') as i_firstname , 
       concat(lastname,'') as i_lastname from roleuser 
where user_id = uid ; 

在本例中,原始列现在未知,并使用别名。我已经在我的系统上进行了测试,在类似的情况下它工作了。同样,如果需要为int使用别名,可以尝试选择(id+0)作为id\u别名。我相信大多数列类型都有类似的解决方案。希望这有帮助。

这样做会发生什么<代码>firstname lastname(别名不在那里…)为了进行测试,您是否可以直接调用sql而不是从存储的进程中调用?只要试着在sql标签中使用Pyting这个sql,好吧,听起来像是一些奇怪的bug。您使用的是什么版本的mysql、jdbc驱动程序和tomcat?我们可以进行JIRA搜索,查看是否存在sql别名的已知错误。mysql 5.1.44、jstl1.1、glassfish 3.0、jdbc mysql connector 5.1.12