微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java在MySQL数据库中创建表

首先感谢那些曾帮助过我的人.

我目前遇到的问题是这行代码

    statement.executeUpdate(myTableName);

或者使用这些代码

    String myTableName = "CREATE TABLE AgentDetail (" 
        + "idNo INT(64) NOT NULL AUTO_INCREMENT,"  
        + "initials VARCHAR(2)," 
        + "agentDate DATE,"  
        + "agentCount INT(64))";  

代码到达这些点时,它会生成一个sqlException块捕获的错误.

它要么非常简单,要么非常复杂

任何人都可以指出这个Java MysqL编程的新手在哪里犯了错误,希望没有错误,提前谢谢

这是完整的其余代码

    public class DbStuff {
    private String jdbcDriver = "com.MysqL.jdbc.Driver";
    private String dbAddress = "jdbc:MysqL://localhost:3306/";
    private String userPass = "?user=root&password=";
    private String dbname = "TIGER19";
    private String userName = "root";
    private String password = "";

    private PreparedStatement preStatement;
    private Statement statement;
    private ResultSet result;
    private Connection con;

    public DbStuff() {
        try {
            Class.forName(jdbcDriver);
            con = DriverManager.getConnection(dbAddress + dbname, userName, password);
        } 
        catch (ClassNotFoundException e) {
            e.printstacktrace();
        } 
        catch (sqlException e) {
            createDatabase();
            createTableCub1();
        }
    }

    private void createDatabase() {
        try {
            Class.forName(jdbcDriver);
            con = DriverManager.getConnection(dbAddress + userPass);
            Statement s = con.createStatement();
            int myResult = s.executeUpdate("CREATE DATABASE IF NOT EXISTS " + dbname);
        } 
        catch (ClassNotFoundException | sqlException e) {
            e.printstacktrace();
        }
    }

    private void createTableCub1() {
        String myTableName = "CREATE TABLE AgentDetail (" 
            + "idNo INT(64) NOT NULL AUTO_INCREMENT,"  
            + "initials VARCHAR(2)," 
            + "agentDate DATE,"  
            + "agentCount INT(64))";  
        try {
            Class.forName(jdbcDriver);
            con = DriverManager.getConnection(dbAddress + dbname, userName, password);
            statement = con.createStatement();
            //The next line has the issue
            statement.executeUpdate(myTableName);
            System.out.println("Table Created");
        }
        catch (sqlException e ) {
            System.out.println("An error has occurred on Table Creation");
        }
        catch (ClassNotFoundException e) {
            System.out.println("An MysqL drivers were not found");
        }
    }
    }

解决方法:

您的表创建sql语句不正确.要在MysqL中设置列自动增量,它必须是主键.

CREATE TABLE AgentDetail ( 
        idNo INT(64) NOT NULL AUTO_INCREMENT, 
        initials VARCHAR(2),
        agentDate DATE,  
        agentCount INT(64),PRIMARY KEY (`idNo`));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐