gli ultimi giorni stavo cercando di imparare come accedere ai database mySQL tramite Java. Sono in grado di caricare il driver e ottenere una connessione al database (almeno io la penso così, dal momento che non ottengo un'eccezione lì ..)java.sql.SQLException: nessun database selezionato - perché?
il codice è:
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);
}
}
}
Quando ho eseguito, esso dice:
driver loaded...
Connection successful...
database-ConnectionError: java.sql.SQLException: [MySQL][ODBC 5.2(w) Driver][mysqld-5.5.31]No database selected
io davvero non so il problema, perché ho pensato che il database è stato selezionato durante il processo di "getConnection" ....
ho cercato di selezionare un database con l'aggiunta di questa riga:
dopo aver creato la dichiarazione.
sfortunatamente non ha funzionato perché ho ricevuto un'altra eccezione che diceva che dovevo controllare la sintassi. Non lo capisco perché nella mia linea di comando funziona bene ... Non so se è possibile usare questo tipo di comandi via Java, quindi se non lo è, perdona il mio errore.
Spero che tu possa aiutarmi e non ho perso la soluzione durante la mia ricerca!
Già Grazie a tutti quelli che rispondono e usano il loro tempo sui miei problemi!
ps. Se ho dimenticato di sottolineare alcune informazioni importanti (non credo che ho fatto io) si prega di chiedere :)
edit: Ho anche cercato di creare un nuovo database durante il runtime
stmt.executeUpdate("CREATE DATABASE test;");
questo in realtà funziona, ma il database non sarà selezionato ...
Per inciso: con un driver JDBC, non si dovrebbe usare i comandi come 'uso 'per passare da un database all'altro. Invece dovresti usare 'setCatalog' e/o' setSchema' (o specificare il database nella stringa di connessione). L'uso di "use " può comportare un comportamento errato del driver. –