sep*_*er3 8 java mysql odbc jdbc 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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我执行它时,它说:
驱动程序已加载...
连接成功...
database-ConnectionError:java.sql.SQLException:[MySQL] [ODBC 5.2(w)驱动程序] [mysqld-5.5.31]未选择数据库
我真的不知道这个问题,因为我认为在"getConnection"过程
中选择了数据库.... 我试图通过添加这一行来选择数据库:
stmt.executeUpdate("use test;");
Run Code Online (Sandbox Code Playgroud)
创建Statement后.
不幸的是它没有用,因为我有另一个例外,说我应该检查语法.我不明白,因为在我的命令行中它工作得很好......我不知道是否可以通过Java使用这些类型的命令,所以如果不是,请原谅我的错误.
我希望你能帮助我,在我自己的搜索中我没有错过这个解决方案!
已经感谢所有回复并利用时间解决问题的人!
PS.如果我忘了指出一些重要的信息(我不认为我这样做)请问:)
编辑:我还试图在运行时创建一个新的数据库
stmt.executeUpdate("CREATE DATABASE test;");
Run Code Online (Sandbox Code Playgroud)
这实际上有效,但数据库也不会被选中......
首先,我正在考虑我的答案,向您展示与MySQL数据库连接的另一种更好的方法,它更容易,并且更少nu-expected Exception(s).
你需要做一些步骤:
.jar到库中,或者YouTube上有很多内容).请参阅下面的示例,我为您演示的示例如何在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();
}
}
Run Code Online (Sandbox Code Playgroud)在添加表之前,首先必须选择一个数据库.您可以使用以下命令创建新数据库:
CREATE DATABASE database_name
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令连接到特定数据库:
String url = "jdbc:mysql://localhost/databasename";
String username = "test";
String password = "test";
Connection connection = DriverManager.getConnection(url, username, password);
Run Code Online (Sandbox Code Playgroud)