Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java创建并连接到SQL数据库_Java_Mysql_Sql - Fatal编程技术网

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

使用Java创建并连接到SQL数据库,java,mysql,sql,Java,Mysql,Sql,我有一个连接到SQL数据库的Java程序,可以从中读写,但是,为了使用该程序,我首先必须打开Workbench,并在其中运行SQL查询 显然,这不是一个很好的解决方案,那么如何在Java代码中创建和连接数据库呢 我在网上搜索过,包括Oracle网站,但看不到 下面是我的代码 public Connection ConnectNow() //Connect to the database { try { Class.forName("com.mysql.jdbc.

我有一个连接到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();
    }
}
public ConnectNow()//连接到数据库
{
尝试
{
Class.forName(“com.mysql.jdbc.Driver”).newInstance();
} 
捕获(例外情况除外)
{
System.out.println(“错误1”);
例如getMessage();
}
最终字符串dbURL=“jdbc:mysql://localhost/game1“;//将'assignex'替换为数据库名称
连接conn=null;
尝试
{
conn=DriverManager.getConnection(dbURL,“root”,“password”);
System.out.println(“\n==连接成功==”;
返回连接;
} 
catch(SQLException-ex)
{
System.out.println(“错误2”);
System.out.println(“SQLException:+ex.getMessage());
System.out.println(“SQLState:+ex.getSQLState());
System.out.println(“vendoerror:+ex.getErrorCode());
返回null;
}
}
公共数据库()
{
尝试
{
连接conn=ConnectNow();
语句stmt=conn.createStatement();
String createDatabase=“创建数据库,如果不存在game1”//创建数据库
stmt.executeUpdate(createDatabase);
康涅狄格州关闭();
stmt.close();
System.out.println(“>”);
}
捕获(例外情况除外)
{
System.out.println(“错误7”);
例如getMessage();
例如printStackTrace();
}
}
public void CreateTable()//在数据库中创建一个表
{
尝试
{
连接conn=ConnectNow();
语句stmt=conn.createStatement();
String createTable=“如果不存在创建表用户”+
“(firstname VARCHAR(255),”+//自动递增以自动添加数字
“姓瓦查尔(255),”+
“天整数,”+
“月份整数,”+
年份整数+
用户名VARCHAR(255)不为空+
密码VARCHAR(255)+
“主键(用户名))”;
stmt.executeUpdate(createTable);
康涅狄格州关闭();
stmt.close();
System.out.println(“>”);
}
捕获(例外情况除外)
{
System.out.println(“错误6”);
例如getMessage();
例如printStackTrace();
}
}
这可能与我在创建数据库之前尝试连接有关,但我找不到正确实现这一点的解决方案


非常感谢您的帮助。

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

也许您可以尝试将端口和主机分别声明为以下字符串,然后创建数据库,这样您就可以了

  `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";`                

也许你需要在某个地方指定端口。我明白你的意思,但是当一个人使用该程序时,数据库将存储在他们的本地计算机上,因此它可能需要创建数据库。好的,那么你需要定义与的连接,你不能包含数据库名称。然后创建模式名称,并使用MySQL use命令。然后,您可以运行SQL文件来创建所有表、视图等。这些表、视图不能解决连接字符串中不存在数据库名称的问题。他如何定义主机名和端口名并不相关。