Ostatnie dni próbowałem dowiedzieć się, jak uzyskać dostęp do baz danych MySQL za pośrednictwem Java. jestem w stanie załadować sterownika i uzyskać połączenie z bazą danych (przynajmniej tak mi się wydaje, bo nie dostają tam wyjątek ..)java.sql.SQLException: Nie wybrano żadnej bazy danych - dlaczego?
kod jest:
import java.sql.*;
public class test
{
public static void main(String[] args)
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
System.out.println("driver loaded...");
}
catch(ClassNotFoundException e){
System.out.println("Error in loading the driver..."+e);
System.exit(0);
}
try
{
Connection dbConnection= DriverManager.getConnection("jdbc:odbc:test","root","password");
System.out.println("Connection successful...");
Statement stmt = dbConntection.createStatement();
stmt.executeUpdate("create table Accounts (name char(20))");
}
catch(SQLException e)
{
System.out.println("database-ConnectionError: "+e);
System.exit(0);
}
}
}
Kiedy ja go wykonać, to mówi:
driver loaded...
Connection successful...
database-ConnectionError: java.sql.SQLException: [MySQL][ODBC 5.2(w) Driver][mysqld-5.5.31]No database selected
ja naprawdę nie wiem, ten problem, bo myślałem, że baza danych jest wybrany podczas procesu „getConnection” ....
starałem się wybrać bazy danych przez dodanie ta linia:
stmt.executeUpdate("use test;");
po utworzeniu wyciągu.
Niestety to nie zadziałało, ponieważ dostałem inny wyjątek, który powiedział, że powinienem sprawdzić składnię. Nie rozumiem tego, ponieważ w moim wierszu poleceń działa dobrze ... Nie wiem, czy można używać tego typu poleceń przez Javę, więc jeśli tak nie jest, proszę wybaczyć mój błąd.
Mam nadzieję, że możesz mi pomóc i nie przegapiłem rozwiązania podczas własnych poszukiwań!
Już dziękuję wszystkim, którzy odpowiadają i wykorzystują swój czas na moje problemy!
ps. Gdybym zapomniał podkreślić pewne istotne infos (nie sądzę, ja) proszę pytać :)
edit: Próbowałem też utworzyć nową bazę danych podczas wykonywania
stmt.executeUpdate("CREATE DATABASE test;");
to faktycznie działa, ale Baza danych nie zostanie wybrana ...
Tak na marginesie: ze sterownika JDBC, nie należy używać komend jak 'użytku 'aby przełączać się między bazami danych. Zamiast tego powinieneś użyć 'setCatalog' i/lub' setSchema' (lub określić bazę danych w łańcuchu połączenia). Użycie 'use ' może prowadzić do nieprawidłowego zachowania sterownika. –