java.sql.SQLException:未选择数据库 - 为什么?

新手上路,请多包涵

最近几天我试图学习如何通过 Java 访问 mySQL 数据库。我能够加载驱动程序并连接到数据库(至少我是这么认为的,因为我在那里没有遇到异常……)

代码是:

     import java.sql.*;
    public class test
    {
        public static void main(String[] args)
        {
            try
            {
              Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
              System.out.println("driver loaded...");
            }
            catch(ClassNotFoundException e){
              System.out.println("Error in loading the driver..."+e);
              System.exit(0);
            }
            try
            {
                Connection dbConnection= DriverManager.getConnection("jdbc:odbc:test","root","password");
                System.out.println("Connection successful...");
                Statement stmt = dbConntection.createStatement();
                stmt.executeUpdate("create table Accounts ( name char(20) )");
             }
             catch(SQLException e)
             {
                  System.out.println("database-ConnectionError: "+e);
                  System.exit(0);
             }
        }
    }

当我执行它时,它说:

驱动加载…

连接成功…

数据库连接错误:java.sql.SQLException:[MySQL][ODBC 5.2(w) Driver][mysqld-5.5.31]未选择数据库

我真的不知道这个问题,因为我认为数据库是在“getConnection”过程中选择的….

我试图通过添加这一行来选择一个数据库:

     stmt.executeUpdate("use test;");

创建声明后。

不幸的是它没有用,因为我得到另一个异常,它说我应该检查语法。我也不明白,因为在我的命令行中它工作得很好……我不知道是否可以通过 Java 使用这些类型的命令,所以如果不能,请原谅我的错误。

我希望你能帮助我,我在自己的搜索过程中没有错过解决方案!

已经感谢所有回复并花时间解决我的问题的人!

附言。如果我忘了指出一些重要的信息(我想我没有)请问:)

编辑:我还尝试在运行时创建一个新数据库

     stmt.executeUpdate("CREATE DATABASE test;");

这确实有效,但也不会选择数据库……

原文由 sepphuber3 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 613
2 个回答

首先,我正在考虑我的回答,以向您展示另一种更好的连接 MySQL 数据库的方法,它更容易并且更少 nu-expected Exception(s)

你需要做一些步骤:

  1. 下载 Connector/J 并将其添加到您的类路径(如果您使用的是 IDE,则将 .jar 添加到库中,或者 YouTube 上 有很多 tuts)。
  2. 在 MySQL 程序中创建数据库。
  3. 请参阅下面的示例,下面是我为您制作的示例,演示了如何在 MySQL 上连接和执行查询:
    import java.sql.*;

   public class MySqlConnection {
     private String MYSQL_DRIVER = "com.mysql.jdbc.Driver";
     private String MYSQL_URL = "jdbc:mysql://localhost:3306/test";

     private Connection con;
     private Statement st;
     private ResultSet rs;

     public MySqlConnection() {

       try {
         Class.forName(MYSQL_DRIVER);
         System.out.println("Class Loaded....");
         con = DriverManager.getConnection(MYSQL_URL,"","");
         System.out.println("Connected to the database....");
         st = con.createStatement();
         int c =st.executeUpdate("CREATE TABLE Accounts (Name VARCHAR(30))");
         System.out.println("Table have been created.");
         System.out.println(c+" Row(s) have been affected");
         con.close();

       } catch(ClassNotFoundException ex) {
          System.out.println("ClassNotFoundException:\n"+ex.toString());
          ex.printStackTrace();

       } catch(SQLException ex) {
           System.out.println("SQLException:\n"+ex.toString());
           ex.printStackTrace();
       }
     }

     public static void main(String...args) {
       new MySqlConnection();
     }
   }

原文由 Azad 发布,翻译遵循 CC BY-SA 3.0 许可协议

在添加表之前,您首先必须选择一个数据库。你可以创建一个新的数据库:

   CREATE DATABASE database_name

你可以连接到一个特定的数据库:

 String url = "jdbc:mysql://localhost/databasename";
String username = "test";
String password = "test";
Connection connection = DriverManager.getConnection(url, username, password);

原文由 Stefan Pante 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题