gpt4 book ai didi

java - com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException : Table 'bus' already exists

转载 作者:行者123 更新时间:2023-11-30 07:01:12 24 4
gpt4 key购买 nike

我试图让我的代码顺利运行,但是在第一次插入之后,当表存在时,我总是得到这个错误 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'bus' already exists 在创建 fisr 表并插入数据后也会出现此错误?!如果不创建表,我只想检查表是否存在,如果存在,则插入数据,只更新数据。

数据库类:

package org.busTracker.serverSide;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Database {

public void connection() {
try {
Class.forName("com.mysql.jdbc.Driver");
System.out.println("jar works :) ");

} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public void insertData(String mac, int route, float latitude,
float longitude) {

connection();
String host = "jdbc:mysql://localhost/busTracker";
String user = "root";
String password = "";

try {
Connection con = DriverManager.getConnection(host, user, password);

// Create a statement
Statement stt = con.createStatement();

// Check whether table exists.
boolean rest = stt.execute("SHOW TABLES like 'bus' ");

if (rest) {

PreparedStatement prep = con
.prepareStatement("REPLACE INTO bus(mac, route, latitude, longitude)"
+ "VALUES( ?, ?, ? , ? )");
prep.setString(1, mac);
prep.setInt(2, route);
prep.setFloat(3, latitude);
prep.setFloat(4, longitude);
prep.executeQuery();

} else {

// Create bus table
stt.execute("CREATE TABLE bus"
+ "(id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,"
+ "mac VARCHAR(30) NOT NULL UNIQUE,"
+ "route int(11) NOT NULL,"
+ "latitude FLOAT(10,6) NOT NULL,"
+ "longitude FLOAT(10,6) NOT NULL,"
+ "created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)");

PreparedStatement prep = con
.prepareStatement("REPLACE INTO bus(mac, route, latitude, longitude)"
+ "VALUES( ?, ?, ? , ? )");
prep.setString(1, mac);
prep.setInt(2, route);
prep.setFloat(3, latitude);
prep.setFloat(4, longitude);
prep.executeQuery();

}

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

最佳答案

您可能想使用 CREATE TABLE IF NOT EXISTS 语法

https://dev.mysql.com/doc/refman/5.5/en/create-table.html

这会帮助你避免这样的错误

但我会检查是否

 boolean rest = stt.execute("SHOW TABLES like 'bus' ");

正确工作,可能会得到错误的结果,执行错误的操作

关于java - com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException : Table 'bus' already exists,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30020099/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com