我试图学习如何通过
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); } } }
当我执行它时,它说:
driver loaded…
Connection successful…
database-ConnectionError: java.sql.sqlException: [MysqL][ODBC 5.2(w) Driver][MysqLd-5.5.31]No database selected
我真的不知道这个问题,因为我认为在“getConnection”过程中选择了数据库….
我尝试通过添加以下行来选择数据库:
stmt.executeUpdate("use test;");
创建Statement后.
不幸的是它没有用,因为我有另一个例外,说我应该检查语法.我不明白,因为在我的命令行中它工作得很好……
我不知道是否可以通过Java使用这些类型的命令,所以如果不是,请原谅我的错误.
PS.如果我忘了指出一些重要的信息(我不认为我这样做)请问:)
编辑:我还试图在运行时创建一个新的数据库
stmt.executeUpdate("CREATE DATABASE test;");
这实际上有效,但数据库也不会被选中……
解决方法
@H_403_40@ 首先,我正在考虑我的答案,向您展示与MysqL数据库连接的另一种更好的方法,它更容易,并且更少nu-expected Exception(s).你需要做一些步骤:
>下载Connector/J并将其添加到您的类路径中(如果您使用的是IDE,则将.jar添加到库中,或者在YouTube上有很多内容).
>在MysqL程序中创建数据库.
>请参阅下面的示例,我为您演示的示例如何在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(); } }