使用Java创建并连接到SQL数据库

时间:2015-02-21 21:06:15

标签: java mysql sql

我有一个连接到SQL数据库的Java程序,可以从中编写和读取,但是,为了使用该程序,我首先必须打开Workbench,并在那里运行SQL查询。

显然,这不是一个很好的解决方案,那么如何在Java代码中创建和连接数据库呢?

我已经在线搜索过,包括Oracle网站,但无法获得它。

以下是我的代码。

public Connection ConnectNow() //Connect to the database
{
    try 
    {
        Class.forName("com.mysql.jdbc.Driver").newInstance();
    } 

    catch (Exception ex) 
    {
        System.out.println("Error 1");
        ex.getMessage();
    }

    final String dbURL = "jdbc:mysql://localhost/game1"; //replace 'assignex' with database name
    Connection conn = null;

    try 
    {
        conn = DriverManager.getConnection(dbURL, "root", "password");

        System.out.println("\n== Connection Successful ==");

        return conn;
    } 

    catch (SQLException ex) 
    {
        System.out.println("Error 2");
        System.out.println("SQLException: " + ex.getMessage());
        System.out.println("SQLState: " + ex.getSQLState());
        System.out.println("VendorError: " + ex.getErrorCode());

        return null;
    }
}


public void CreateDatabase()
{
    try
    {
        Connection conn = ConnectNow();
        Statement stmt = conn.createStatement();

        String createDatabase = "CREATE DATABASE IF NOT EXISTS game1"; //creates database
        stmt.executeUpdate(createDatabase);

        conn.close();
        stmt.close();

        System.out.println("<< Database created successfully >>");
    }

    catch (Exception ex)
    {
        System.out.println("Error 7");
        ex.getMessage();
        ex.printStackTrace();
    }
}

public void CreateTable() //creates a table within the database
{
    try
    {
        Connection conn = ConnectNow();
        Statement stmt = conn.createStatement();

        String createTable = "CREATE TABLE IF NOT EXISTS user" + 
                             "(firstname VARCHAR(255), " + //AUTO_INCREMENT to add numbers automatically
                             " surname VARCHAR(255), " +
                             " day INTEGER, " +
                             " month INTEGER, " +
                             " year INTEGER, " +
                             " username VARCHAR(255) NOT NULL, " +
                             " password VARCHAR(255), " +
                             " PRIMARY KEY (username))";
        stmt.executeUpdate(createTable);

        conn.close();
        stmt.close();

        System.out.println("<< Table created successfully >>");
    }

    catch (Exception ex)
    {
        System.out.println("Error 6");
        ex.getMessage();
        ex.printStackTrace();
    }
}

据推测,这与我在创建数据库之前尝试连接有关,但我无法找到正确实现此解决方案的解决方案。

非常感谢帮助。

2 个答案:

答案 0 :(得分:2)

你已经回答了自己的问题。您的连接URL(jdbc:mysql:// localhost / game1)指定要连接的数据库(game1),但该数据库不存在。如果你看一下你的Exception输出,可能就是这么说的。您的应用不应该创建数据库。它应该只是连接到它并修改它。您可以尝试将URL设置为不包含数据库名称,然后只使用MySQL USE命令指定数据库,但这是很多非必要的工作。只是没有应用程序创建它的数据库。

答案 1 :(得分:0)

也许您可以尝试将您的端口和主机分别声明为以下字符串并创建数据库然后您应该没问题。

  `import java.sql.*; 

    public class Test {
    public static void main(String args[]) { 

    Connection con; 

    try { 
  **String server = "localhost";
    String port = "50000";**    //generic port for DB2 jdbc
    String url = "jdbc:db2://"+server+":"+port+"/sample"; String userid = ”userid";
    String password = ”password";`