【发布时间】:2020-08-14 19:30:46
【问题描述】:
我是 Java 新手。现在我正在尝试从 java 在 SQL Server 数据库中创建一个动态 SQL 表。我有一个字符串中的表名称,一个 ArrayList 中的列名,并为我想要的所有列放置相同的类型和长度。我的代码看起来像这样,但是当我运行它时,我得到了这个错误,我不知道为什么,因为“查询”变量正在打印一个“正确”的查询。我测试它编写一个静态 tableName 和 tColumnNames 并且工作正常......如果有人可以帮助我解决它,我真的会很感激。谢谢
private void createNewTable( String tableName, List<String> newTableColumns) throws SQLException {
//ArrayList to string separated by comma
String tColumNames = String.join(",",newTableColumns );
Connection connection = dataSource.getConnection();
Statement stmt = connection.createStatement();
String query = "CREATE TABLE "+tableName+"( "+tColumNames+" );";
System.out.println("Consulta"+query);
stmt.executeUpdate(query);
stmt.close();
}
“查询”正在打印:
CREATE TABLE 课程(主题 ID VARCHAR(200),日期* VARCHAR(200),生效日期* VARCHAR(200) );
这就是错误
com.microsoft.sqlserver.jdbc.SQLServerException:附近的语法不正确 'VARCHAR'。在 com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:217) 在 com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1655) 在 com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:885) 在 com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(SQLServerStatement.java:778) 在 com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7505) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2445)
【问题讨论】:
标签: java sql-server