Я пытаюсь сделать мой код работать гладко, но после первой вставки и когда существует таблица, я всегда получаю эту ошибку com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'bus' already exists
также после создания таблицы fisr и вставки данных эта ошибка возникает ?! Я хочу просто проверить, существует ли таблица, если не создать табу и вставить данные, если да, просто обновите данные.com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: таблица «bus» уже существует
База данных Класс:
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' работает правильно. –
Если это помогло вам не стесняйтесь пометить ответ как правильный (: – lopushen
Также см. Правильный способ проверки наличия таблицы http://stackoverflow.com/questions/2942788/check-if-table-exists – lopushen