【发布时间】:2015-03-13 21:35:42
【问题描述】:
我想在不选择 Java 数据库的情况下执行 MySQL 查询。我可以直接在 MySQL 控制台中这样做,例如:
CREATE TEMPORARY TABLE temptable
As(select REPLACE(a.keywordSupplied,"www.","") as keywordSupplied
from db1.table1
;
我可以在登录 MySQL 控制台后直接执行上述查询。我这里不使用use 语句
use databasename;
我需要这样做,因为我将在一个查询中从两个不同的数据库中获取数据。 根据http://www.tutorialspoint.com/jdbc/jdbc-create-database.htm,我将 DB URL 设为 jdbc:mysql://localhost/
但它会抛出一个Exception
java.sql.SQLException: No database selected.
在 mysql 控制台中相同的屏幕截图
有什么解决方案可以让它发挥作用?
【问题讨论】:
-
你可以粘贴你使用的网址吗?
-
@almasshaikh。这是连接 Class.forName("com.mysql.jdbc.Driver"); 的代码 sn-p conn1 = DriverManager.getConnection("jdbc:mysql://localhost/", USER, PASS);
-
我相信 JDBC 驱动程序本身要求您选择一个数据库(在 JDBC 中您应该不使用
use database,而是调用setCatalog,或在连接 URL 中明确指定数据库)。 -
@MarkRotteveel."use databasename" 只是为了解释它是如何在 mysql 控制台上完成的。在 mysql 控制台的情况下,我可以在不选择任何数据库(使用上面引用的语句完成)的情况下进行查询。所以我需要用 JAVA 做同样的事情。
-
“我能够[在不选择数据库的情况下执行查询] 直接在 MySQL 控制台中...” - 我刚刚尝试过,但它不起作用我;我收到“错误 1046 (3D000):未选择数据库”。我怀疑当您通过控制台连接时,正在为您选择一个数据库。试试这个:登录到 MySQL 控制台后,立即运行命令
SELECT DATABASE();。如果它返回NULL以外的其他内容,那么您实际上确实选择了一个数据库。