JDBC" MySQL语法错误"尝试切换到(USE)数据库时

时间:2015-11-07 17:41:11

标签: java mysql jdbc

我一直在尝试使用此代码在数据库中创建一个表,该表成功创建之前的代码。

sudo rm -rf /var/lib/ruby/1.9.1/

我的代码连接到数据库服务器:

//Creates "Parts" Table if it's not already created.
public void createTableIfNecessary() throws SQLException{
String createString =
        "USE inventory; " +
        "CREATE TABLE IF NOT EXISTS parts " +
                "(part_name TEXT NOT NULL, remaining_amt INT NOT NULL, " +
                "restock_amt INT, barcode TEXT, location TEXT, part_id INT NOT NULL AUTO_INCREMENT);";
Statement createTable = this.con.createStatement();
createTable.execute(createString);
System.out.println("Table created or already existed: Parts");
}

(这有效,但看起来可能会有所帮助)

我的错误:

    try{Class.forName("com.mysql.jdbc.Driver");} catch(Exception e){
        e.printStackTrace();
    }
    this.con = null;
    Properties connectionProps = new Properties();
    connectionProps.put("user", this.userName);
    connectionProps.put("password", this.password);
    this.con = DriverManager.getConnection("jdbc:mysql://" + this.serverName + ":" + this.portNumber + "/", connectionProps);
    System.out.println("Connected to MySQL Database Server");

我认为这只是我对MySQL的无能,但也许有人在这里可以看到我的语法错误。谢谢!

2 个答案:

答案 0 :(得分:3)

USE inventory;语句不适用于JDBC连接的上下文。您需要使用Connection#setCatalog()切换到特定的数据库。有关详细信息,请参阅

Java, how to change current database to another?

这样做并从SQL中删除USE子句。

答案 1 :(得分:1)

对于mysql中的auto_increment列,必须将其编入索引。因此,您必须通过将其作为主键或唯一来索引part_id

CREATE TABLE IF NOT EXISTS parts
(part_name TEXT NOT NULL, 
 remaining_amt INT NOT NULL, 
 restock_amt INT, 
 barcode TEXT, 
 location TEXT, 
 part_id INT NOT NULL AUTO_INCREMENT,
primary key (part_id));