首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java create table sql语句

Java create table sql语句
EN

Stack Overflow用户
提问于 2020-12-15 21:25:18
回答 2查看 104关注 0票数 0

我想用这个方法创建一个新的mySQL表。数据库连接工作正常。我做了很多这样的工作语句,但是这个创建表的语句是不起作用的。所以错误一定出在这几行代码中。在按钮上,我添加了错误消息。

代码语言:javascript
运行
复制
 public void createNewTable(){
        DatabaseConnection connectNow = new DatabaseConnection();
        Connection connectDb = connectNow.getConnection();
        String tableName = "users";
        try {
               String createTable = "CREATE TABLE ? (firstname varchar(30), lastname varchar(30), tel integer" +
                "email varchar(40), arrive_stamp timestamp, quit_stamp timestamp)";
            PreparedStatement myStmt = connectDb.prepareStatement(createTable);
            myStmt.setString(1, tableName);
            myStmt.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
            e.getCause();
        }

    }






 Illegal operation on empty result set.
    java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds 
to your MySQL server version for the right syntax to use near ''users' (firstname varchar(30), 
lastname varchar(30), tel integer, email varchar' at line 1
EN

回答 2

Stack Overflow用户

发布于 2020-12-15 21:33:31

数据库对象名称(包括表名)不能绑定到占位符。您必须对表名进行硬编码或使用字符串连接。下面的方法将会起作用:

代码语言:javascript
运行
复制
try {
    String sql = "CREATE TABLE users (firstname varchar(30), lastname varchar(30), tel integer, " +
                 "email varchar(40), arrive_stamp timestamp, quit_stamp timestamp)";
    PreparedStatement myStmt = connectDb.prepareStatement(sql);
    myStmt.executeUpdate();
}
catch (Exception e) {
    e.printStackTrace();
    e.getCause();
}
票数 0
EN

Stack Overflow用户

发布于 2020-12-15 21:33:31

telemail列之间缺少,。正如Tim在注释中提到的,您应该在sql语句本身中使用表名。

您的sql语句应该是

代码语言:javascript
运行
复制
String createTable = "CREATE TABLE your_table_name (firstname varchar(30), lastname varchar(30), tel integer, " + -- added , at the end
                "email varchar(40), arrive_stamp timestamp, quit_stamp timestamp)";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65306806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档