使用Java创建并连接到SQL数据库
我有一个连接到SQL数据库的Java程序,可以从中读写,但是,为了使用该程序,我首先必须打开Workbench,并在其中运行SQL查询 显然,这不是一个很好的解决方案,那么如何在Java代码中创建和连接数据库呢 我在网上搜索过,包括Oracle网站,但看不到 下面是我的代码使用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.
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文件来创建所有表、视图等。这些表、视图不能解决连接字符串中不存在数据库名称的问题。他如何定义主机名和端口名并不相关。