最近我一直在尝试学习如何通过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;");
在创建Statement之后。
不幸的是,它没有奏效,因为我收到了另一个异常,提示我应该检查语法。我也不理解,因为在命令行中它可以正常工作...如果不能通过Java使用这些类型的命令,那么请原谅我的错误。
我希望你能帮助我,我希望在自己的搜索中没有错过解决方案!
感谢所有回复并花时间解决我的问题!
附注:如果我忘记指出一些重要信息(我认为我没有),请提出询问:)
编辑:我也尝试在运行时创建一个新的数据库
stmt.executeUpdate("CREATE DATABASE test;");
这实际上是有效的,但数据库也不会被选中...
use <database>
这样的命令来在数据库之间切换。相反,您应该使用setCatalog
和/或setSchema
(或在连接字符串中指定数据库)。使用use <database>
可能会导致驱动程序出现错误行为。 - Mark Rotteveel