从 mysql 网站检索时未选择数据库

Posted

技术标签:

【中文标题】从 mysql 网站检索时未选择数据库【英文标题】:No Database selected when retrieving from mysql website 【发布时间】:2013-02-13 00:19:31 【问题描述】:

我有一个 mysql 数据库,我正试图从我们的网站主机 (godaddy) 检索它。我遵循了一种似乎正确的格式,但它告诉我:

java.sql.SQLException: No database selected

代码:

public static void main(String[] args) 

    Connection conn = null;
    Statement stmt = null;

    try 
        // STEP 2: Register JDBC driver
        Class.forName(JDBC_DRIVER);

        // STEP 3: Open a connection
        System.out.println("Connecting to database...");
        conn = DriverManager.getConnection(DB_URL, USER, PASS);

        // STEP 4: Execute a query
        System.out.println("Creating statement...");
        stmt = conn.createStatement();
        String sql;
        sql = "SELECT * FROM item_master";
        ResultSet rs = stmt.executeQuery(sql);  //<-- This is where the error is.

        // STEP 5: Extract data from result set
        while (rs.next()) 
            // Retrieve by column name
            int id = rs.getInt("id");

            // Display values
            System.out.print("ID: " + id);
        
...

我做了一个 conn 的打印语句,可能认为连接可能为空,并显示如下:

com.mysql.jdbc.JDBC4Connection@2a6*****

有人知道什么会导致这样的事情吗?

【问题讨论】:

请显示DB_URL 的值,如果它的隐私很重要,至少是格式。 【参考方案1】:

您的数据库 URL 应包含您的数据库名称。这通常是您的 URL,后跟“/DBNAME”。

String URL = "jdbc:mysql://localhost:3306/mydb";

其中“mydb”是您的数据库名称。

【讨论】:

这是我拥有的数据库网址:jdbc:mysql://SLibdev.db.9969424.hostedresource.com 所以它缺少端口和数据库方案名称。这绝对是答案,+1 @AdriánLópez 那么这将是格式吗? jdbc:mysql://hostedresource.com:9969424/SLibdev.db 不可能,这个数字太大了,不能当端口 默认是 3306 试试看或询问您的提供商【参考方案2】:

DB_URL 的值是多少?据我所知,URL 需要采用以下形式: “WEBURL/数据库名称:端口” 您是否只是尝试连接到 WEBURL,而不指定 DATABASE?

【讨论】:

这是我拥有的数据库网址:jdbc:mysql://SLibdev.db.9969424.hostedresource.com 啊,是的,你确实是对的。因此格式应该是“WEBURL/DATABASENAME:PORT” 啊,是的,你确实是对的。因此正确的格式是“WEBURL:PORT/DATABASENAME”。我相信 mysql 的典型端口是 3306。所以你会想要像“SLibdev.db.9969424.hostedresource.com:3306/DBNAME”这样的东西 谢谢大家的帮助,我可以连接了!!! :D。我希望我能给你们一些分数。【参考方案3】:

我遇到了同样的问题。

只需再运行一个查询(在您的“SELECT”语句之前)即可连接到您的数据库。

第一:

sql = "USE <yourdatabase>";

ResultSet rs = stmt.executeQuery(sql); 

之后:

sql = "SELECT * FROM item_master";

rs = stmt.executeQuery(sql);

【讨论】:

以上是关于从 mysql 网站检索时未选择数据库的主要内容,如果未能解决你的问题,请参考以下文章

尝试从 API 检索数据时未定义经度

ABPersonViewController 在推送到 PeoplePickerNavigationController 时未检索数据

Mysql必知必会 检索数据

MySQL基础:检索数据

从网站的不同页面访问时未从缓存加载 SWF 文件?

从 mysql 数据库中检索图像