Java:连接MySQL数据库?的DriverManager.getConnection()?

时间:2015-01-10 12:39:30

标签: java mysql database connect

所以我只是想知道,这个代码在这里做错了什么(可能还有多少......)?

try {
    Class.forName("com.mysql.jdbc.Driver");
    Connection c = DriverManager.getConnection("jdbc:mysql://mysql1.000webhost.com/mydatabase", "myusername", "mypassword");
    } catch (SQLException e) {
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
}

由于我已经对用户名/密码进行了三重检查,因此我猜测主机名有问题。数据库只在服务器上(我没有任何保存的本地版本或任何东西......我需要吗?)。

而且,有人可以告诉我,如果我想做我想做的事情,我会选择合适的路线吗?基本上我已经创建了一个免费版本和非常便宜的付费版本的软件。我想是为了防止盗版,因为程序需要互联网连接,我可以将他们的电子邮件地址存储为用户名,然后他们的计算机的MAC地址就是密码(每次运行程序时,我会比较PC上的MAC地址与数据库中的电子邮件一起注册。我不知道这是否是一个很好的反盗版措施,但我只是想知道,如果我设法让连接正常工作那是我能够做的事情,还是会出现安全问题?

无论如何,提前谢谢:)

5 个答案:

答案 0 :(得分:1)

如果它不是localhost,我无法对主机发表评论,但你也必须提供端口号。它不见了。

Connection  con = DriverManager
                .getConnection("jdbc:mysql://"+pHost+":"+pPort+"/Your_mysql_schema_name",username, password);

并且在MYSQL中您的模式名称将是您的数据库名称。确保您提供模式名称和端口号。通常用于MYSQL的3306

答案 1 :(得分:0)

编写一段java代码以从远程连接操作数据库不是一个好主意。有人可以对您的代码进行反向工程并更改您的数据。

您应该至少在网上实施一项可以处理您可能收到的垃圾邮件的简单服务,并保护您的数据。

答案 2 :(得分:0)

我认为您错过了URL中的数据库端口号。请尝试:

try {
    Class.forName("com.mysql.jdbc.Driver"); // Not Required for JDBC 4.0 onwards
    Connection c = DriverManager.getConnection("jdbc:mysql://mysql1.000webhost.com: 3306/mydatabase", "myusername", "mypassword");
    } catch (SQLException e) {
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }

答案 3 :(得分:0)

尝试使用mysql1.000webhost.com代替IP更改服务器try { Class.forName("com.mysql.jdbc.Driver"); Connection c = DriverManager.getConnection("jdbc:mysql://123.456.789.012:3306/mydatabase", "myusername", "mypassword"); } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } 地址 例如,

{{1}}

答案 4 :(得分:0)

我会先推荐一些reading。此幻灯片可能会向您展示如何构建Java EE应用程序。

接下来,您可能需要多阅读how to connect your application with a database

Hibernate是用于在数据库和Java程序之间建立连接的最广泛使用的工具之一。它允许您使用xml格式的配置文件将您的连接数据(例如用户名,密码,连接URL)与代码分开。这一行:

Connection c = DriverManager.getConnection("jdbc:mysql://mysql1.000webhost.com/mydatabase", "myusername", "mypassword");

建立连接是一种非常危险的方式,因为您在代码中提供了机密凭据。有办法从二进制文件中检索这些信息。

您还问过,是否值得拥有一些本地版本的数据库。 anwser是:是的。在本地拥有数据库可能会显着加快开发和测试所需的时间。即使没有可用的互联网连接,它也允许您处理代码。

使用MAC地址提供身份验证是一个非常危险的想法。这些地址附加到给定的机器上。换句话说,用户只能使用他或她创建帐户的计算机连接到您的应用程序。使用其他计算机(例如工作中的笔记本电脑)时,身份验证将被拒绝。