Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.sql.SQLException上的Mysql连接失败:未选择数据库_Java_Mysql_Jdbc_Database Connection - Fatal编程技术网

java.sql.SQLException上的Mysql连接失败:未选择数据库

java.sql.SQLException上的Mysql连接失败:未选择数据库,java,mysql,jdbc,database-connection,Java,Mysql,Jdbc,Database Connection,在我的应用程序中,我通过JDBC驱动程序使用这样的URL创建连接 jdbc:mysql://localhost:3306/?connectionCollation=latin1_general_cs&user=user&password=password! 因此,url中没有指定db。然后,我的应用程序创建了数据库,我试图通过使用以下命令强制连接使用此数据库: connection.setCatalog(databaseName); 但在以下情况下,语句执行失败: java.

在我的应用程序中,我通过JDBC驱动程序使用这样的URL创建连接

jdbc:mysql://localhost:3306/?connectionCollation=latin1_general_cs&user=user&password=password!
因此,url中没有指定db。然后,我的应用程序创建了数据库,我试图通过使用以下命令强制连接使用此数据库:

connection.setCatalog(databaseName);
但在以下情况下,语句执行失败:

java.sql.SQLException: No database selected
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:998)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3835)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3771)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2435)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2582)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2531)
    at com.mysql.jdbc.ConnectionImpl.setCatalog(ConnectionImpl.java:4934)
    at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:824)
    at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:742)
    at org.fist.DB.connection.MySQLDatabaseConnection.executeSqlFile(MySQLDatabaseConnection.java:80)
    at org.fist.products.ssc.actions.InstallSSC.recreateDatabaseAndTables(InstallSSC.java:748)
    at org.fist.products.ssc.actions.InstallSSC.execute(InstallSSC.java:263)
    at com.mercury.mtf.core.AbstractAction.run(AbstractAction.java:51)
    at com.mercury.mtf.core.Unit.runUnitAction(Unit.java:277)
    at com.mercury.mtf.core.Unit.executeUnitAction(Unit.java:144)
    at com.mercury.mtf.core.Unit.run(Unit.java:99)
    at com.mercury.mtf.core.execution.DefaultUnitExecutor.call(DefaultUnitExecutor.java:24)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

事实上对我有用。你们能提供你们的代码并指出引发异常的地方吗?看起来我已经找到了我的问题所在。我在强制连接使用catalog之前定义语句st=connection.createStatement(),因此我的语句不知道更改,这就是为什么它在正确的“未选择数据库”上失败的原因:在目录更改之前创建的语句不应受到目录更改的影响。换句话说:您需要在连接URL中指定数据库名称,或者在创建语句之前发出
setCatalog