Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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 带有$符号的msql表名_Java_Mysql_Spring_Jdbc_Jdbctemplate - Fatal编程技术网

Java 带有$符号的msql表名

Java 带有$符号的msql表名,java,mysql,spring,jdbc,jdbctemplate,Java,Mysql,Spring,Jdbc,Jdbctemplate,我有Mysql 5DB中的表,其名称前缀为美元符号“$” ie tablename$MYTABLE 我正在使用Spring3.0JDBCTemplate执行select查询,但无法使其工作 即 这将始终抛出InvalidSqlException,可能是因为$符号。 如果我只是做一个没有参数的普通查询,即 private static final String STOCK_SELECT = "select symbol, open, high, low, close, vol,

我有Mysql 5DB中的表,其名称前缀为美元符号“$” ie tablename$MYTABLE

我正在使用Spring3.0JDBCTemplate执行select查询,但无法使其工作

这将始终抛出InvalidSqlException,可能是因为$符号。 如果我只是做一个没有参数的普通查询,即

    private static final String STOCK_SELECT = 
    "select symbol, open, high, low, close, vol, ev from $AAPL";
然后一切都开始了

如何使用jdbcTemplate转义$sign

-编辑,我最后做的是-

我没有将表名$AAPL传递给jdbcTemplate,而是手动创建SQL字符串,即

 jdbcTemplate.query( getStockSelect("$AAPL", .., .. ));
SQL支持分隔标识符,因此您可以使用标点符号、空格、特殊符号、国际字符或SQL关键字作为表名或列名

看看我过去对你的回答

在MySQL中,使用反引号:

private static final String STOCK_SELECT = 
"select symbol, open, high, low, close, vol, ev from `$AAPL`";
或将SQL_模式设置为ANSI模式并使用双引号:

private static final String STOCK_SELECT = 
"select symbol, open, high, low, close, vol, ev from \"$AAPL\"";

你不能用电话吗?SQL中表名的占位符。这是语言所不支持的。只有在通常可以使用文字值(如整数或单引号字符串)的情况下,才可以使用参数。

数据库信息(如表和列名/标识符)不需要参数化。MySQL使用backtick`表示表名和列名/标识符。您的参数化查询可能以如下方式进入:

 select symbol, open, high, low, close, vol, ev from "$AAPL"
我不知道有任何标准API用于参数化/转义这样的标识符。如果可以的话,我建议把它静态地放在那里。因为它们是相同的列,所以表也可能是一个选项。最后,如果您仍然需要它是动态的,那么您必须自己转义表名,我建议您只从白名单中提取它


你可能想看看。

你到底是怎么做到的?最简单的解决方法是去掉表名中的标点符号。。。
 select symbol, open, high, low, close, vol, ev from "$AAPL"