我可以编译但无法执行以下代码并出现错误(使用Postgres):
Fatal database error ERROR: syntax error at or near "as" Position: 13
import java.sql.*; public class JDBCExample { private static final String JDBC_DRIVER = "org.postgresql.Driver"; private static final String URL = "jdbc:postgresql://hostname/database"; private static final String USERNAME = "username"; private static final String PASSWORD = "password"; public static void main(String[] args) throws Exception { Connection dbConn = null; Statement query = null; ResultSet results = null; Class.forName(JDBC_DRIVER); try { dbConn = DriverManager.getConnection(URL, USERNAME, PASSWORD); } catch (SQLException e) { System.out.println("Unable to connect to database\n"+e.getMessage()); System.exit(1); } try { query = dbConn.createStatement(); results = query.executeQuery("select 20_5 as name from flowshop_optimums"); while (results.next()) { System.out.println(results.getString("name")); } dbConn.close(); } catch (SQLException e) { System.out.println("Fatal database error\n"+e.getMessage()); try { dbConn.close(); } catch (SQLException x) {} System.exit(1); } } // main } // Example
不是下划线,而是列名以数字开头的事实。您需要对此进行转义。
对于MySQL,请使用反引号。
select `20_5` as name from flowshop_optimums
对于SQL Server,请使用方括号。
select [20_5] as name from flowshop_optimums
对于PostgreSQL,请使用双引号。
select "20_5" as name from flowshop_optimums