【发布时间】:2012-05-06 22:22:36
【问题描述】:
如何重新设计以下查询以避免错误:
String sqlQueryToMakeTable = "create table " + UserEmail +
"(" +
"NameOfThePhoto varchar(255)," +
"Caption varchar(255)" +
")";
// UserEmail is of type String
UserEmail 的格式为 user@host.com,当我执行查询时,出现以下错误:
java.sql.SQLSyntaxErrorException: Lexical error at line 1, column 18. Encountered: "@" (64), after : "".
at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown Source)
at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
at org.apache.derby.client.am.Connection.prepareStatement(Unknown Source)
at com.sun.gjc.spi.base.ConnectionHolder.prepareStatement(ConnectionHolder.java:562)
at com.sun.gjc.spi.jdbc40.ConnectionWrapper40.prepareCachedStatement(ConnectionWrapper40.java:255)
at com.sun.gjc.spi.jdbc40.ConnectionWrapper40.prepareCachedStatement(ConnectionWrapper40.java:52)
at com.sun.gjc.spi.ManagedConnection.prepareCachedStatement(ManagedConnection.java:964)
.....
我了解异常的原因。我通过将电子邮件地址放在双引号中直接运行此查询,但我该怎么做?
编辑我们不能在表名中有@吗?
【问题讨论】:
-
你到底为什么要每个用户一张桌子?!?!?
-
您的表名中真的需要字符“@”吗?为什么不直接从 UserEmail 中删除此字符?