#java #jdbc
#java #jdbc
Вопрос:
Я разрабатываю приложение и использую JavaMysql для подключения к базе данных. Как указано в названии, 2-я таблица (автозамены) не создается.
Я попытался запустить оба SQL connects в одном операторе, но также потерпел неудачу
Вот как я подключаюсь к БД, используя java.sql.*;
connection = DriverManager.getConnection("jdbc:mysql://" this.host ":" this.port "/" this.database, this.user, this.password);
Основной код
public MySql initialize() {
connect();
try {
connection.prepareStatement("SELECT 1 FROM guilds LIMIT 1").executeQuery();
} catch (SQLException e) {
try {
connection.prepareStatement(
"CREATE TABLE IF NOT EXISTS `guilds` (n"
" `id` text,n"
" `prefix` text,n"
" `joinmsg` text,n"
" `leavemsg` text,n"
") ENGINE=InnoDB DEFAULT CHARSET=utf8;"
).execute();
connection.prepareStatement(
"CREATE TABLE IF NOT EXISTS `autochans` (n"
" `chan` text,n"
" `guild` text,n"
") ENGINE=InnoDB DEFAULT CHARSET=utf8;"
).execute();
System.out.println("MySql structure created...");
} catch (SQLException e1) {
e1.printStackTrace();
}
}
return this;
}
Комментарии:
1. Удалите точки с запятой в конце инструкции. Они нужны только при использовании командной строки mysql.
2. Не имеете ли вы в виду под концом
CHARSET=utf8;
если да, то все та же проблема.
Ответ №1:
Вам нужно убрать запятую в последнем столбце.
Попробуйте с
connection.prepareStatement(
"CREATE TABLE IF NOT EXISTS `guilds` (n"
" `id` text,n"
" `prefix` text,n"
" `joinmsg` text,n"
" `leavemsg` textn"
") ENGINE=InnoDB DEFAULT CHARSET=utf8"
).execute();
connection.prepareStatement(
"CREATE TABLE IF NOT EXISTS `autochans` (n"
" `chan` text,n"
" `guild` textn"
") ENGINE=InnoDB DEFAULT CHARSET=utf8"
).execute();
Комментарии:
1. Вы всегда можете проверить свои sql-запросы здесь eversql.com/sql-syntax-check-validator