MySQL и Java: таблица не существует
Я создал MySQL DB, используя MySQL Workbench 5.2.40 CE. Сначала я создал новую модель EER и назвал ее тестовой. Затем была создана схема с именем: testdb, затем таблица с именем: table1. Также создано соединение.
Следующий класс для создания соединения с моей БД. Это успешно
import java.sql.*;
public class DBConnection {
public static Connection con = null;
public static Object Connect;
public static void ConnectDB () {
System.out.println("--- MySQL JDBC Connection Testing -----");
try {
Class.forName("com.mysql.jdbc.Driver"); //loading the driver
} catch (ClassNotFoundException e) {
System.out.println("Where is your MySQL JDBC Driver?");
e.printStackTrace();
return;
}
System.out.println("MySQL JDBC Driver Registered!");
try {
//Connect to the database
con = DriverManager.getConnection
("jdbc:mysql://localhost:3306/test", "root", "password");
} catch (SQLException e) {
System.out.println("Connection Failed! Check output console");
e.printStackTrace();
return;
}
if (con != null) {
System.out.println("You made it, take control your database now!");
} else {
System.out.println("Failed to make connection!");
}
}
} //end class
Затем я создал другой класс, содержащий функцию Main, которая вызывает ConnectDB из вышеупомянутого класса DBConnection. Проблема в том, что я получаю сообщение об ошибке: Получено исключение! Таблица 'test.table1' не существует
Я уверен, что table1 существует. Я скопировал его имя из верстака.
Это код для основного класса:
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.sql.PreparedStatement;
import java.util.Scanner;
import java.sql.*;
public class Main {
public static void main(String[] argv) {
String name=null;
DBConnection.ConnectDB(); //connect to database
//Read the inputs from the user
System.out.println("Enter the name: ");
Scanner userInput=new Scanner(System.in);
name=userInput.next();
//Confirmation messages
System.out.println("You entered: "+ name);
// BEGIN INSERT TO DB
try{
// the mysql insert statement
String query=null;
query = " insert into table1 (name)"+ " values (?)";
// create the mysql insert preparedstatement
PreparedStatement preparedStmt = DBConnection.con.prepareStatement(query);
preparedStmt.setString (1, name);
// execute the preparedstatement
preparedStmt.execute();
System.out.println("Inserted");
DBConnection.con.close();
}
catch (Exception e)
{
System.err.println("Got an exception!");
System.err.println(e.getMessage());
}
}
}
Так в чем же проблема, если таблица существует, и я использовал все маленькие буквы в Java и MySQL? и правильно ли я поступаю, вызывая функцию "ConnectDB" только в Main и определяя объект типа подключения как public static в моем классе "DBConnection"?? Я собираюсь вставить значения во многих классах позже?? Я прошу прощения за этот вопрос, но я много искал и хочу убедиться, что я правильно понял, и это мое первое Java-приложение, которое подключается к базе данных.
РЕДАКТИРОВАТЬ
2 ответа
Две альтернативы:
- Присоединиться
testdb
- Получите доступ к своей таблице, используя спецификатор базы данных.
Подключение к testdb:
con = DriverManager.getConnection
("jdbc:mysql://localhost:3306/testdb", "root", "password");
Используя спецификатор базы данных:
query = " insert into testdb.table1 (name)"+ " values (?)";
Вы JDBC URL не правильно использоватьjdbc:mysql://localhost:3306/testdb
в вашем коде.