在 Java 应用程序中持续检查外部数据库

Continuously checking an external database in a Java application

我正在尝试制作一个 Java 应用程序,它可以访问那里托管的 MySQL 数据库,并将 SELECTUPDATE 语句发送到特定的 table.

我当前的连接代码如下所示:

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

MysqlDataSource dataSource = new MysqlDataSource();
dataSource.setUser("username");          -- line 1
dataSource.setPassword("password");      -- line 2
dataSource.setURL("db url");             -- line 3

然而,最后三行在 Eclipse 中引发了这些错误:

第 1 行和第 2 行:

- Syntax error on token ";", @ expected
- Syntax error on token ".", @ expected after

第 3 行:

- Syntax error, insert "SimpleName" to complete 
 QualifiedName
- Syntax error, insert ")" to complete MethodDeclaration
- Syntax error, insert "Identifier (" to complete 
 MethodHeaderName

我查看了 MysqlDataSource 的源代码,setUser 肯定是 public(以及 setPasswordsetServerName)。我不知道为什么它会导致问题。

可执行代码必须包含在 class 块中。 javac 需要诸如 @Entity(来自 javax.persistence)之类的注释或 class 声明。根据上面的代码,您的代码应如下所示:

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

class DBCheck {
    private MysqlDataSource dataSource;

    public DBCheck() {
        dataSource = new MysqlDataSource();
    }

    public Connection connect() throws SQLException {
        dataSource.setUser("username");
        dataSource.setPassword("password");
        dataSource.setURL("db url");

        return dataSource.getConnection();
    }

    public static main( String[] args ) {
        Connection conn = null;
        try {
            DBCheck dbc = new DBCheck();
            conn = dbc.connect();
        } catch( SQLException e ) {
            // code to handle exception
        } finally {
            if( conn != null ) {
                conn.close();
            }
        }
    }
}

有关在没有 JNDI 的情况下使用 DataSource 的更好解释,请参阅 this short tutorial