通过 JDBC 连接到数据库
connecting to a database through JDBC
我正在尝试按照书中关于使用 JDBC 将程序连接到数据库的教程进行操作。我对 class 中第一段代码的作用感到困惑。当我 运行 代码时,我收到一条错误消息说 java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:8889/book_store
并且代码在 class 内的第一个块中抛出异常。我需要向项目添加某种依赖项或库吗?
如您所知,这是我第一次尝试使用数据库...
package com.apress.books.dao;
import com.apress.books.model.Author;
import com.apress.books.model.Book;
import com.apress.books.model.Category;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class BookDAOImpl implements BookDAO {
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException ex) {
}
}
private Connection getConnection() throws SQLException {
return DriverManager.getConnection("jdbc:mysql://localhost:8889/book_store",
"root", "password");
}
private void closeConnection(Connection connection) {
if (connection == null)
return; try {
connection.close();
} catch (SQLException ex) {
}
}
@Override
public void insert(Book book) {
}
@Override
public void update(Book book) {
}
@Override
public void delete(Long bookId) {
}
}
本质上这是一个 ClassNotFoundException。您的第一个 catch 子句是空的,因此,尽管异常被捕获,但您并未对其采取行动。至少,我会做这样的事情:
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException ex) {
throw ex;
}
}
这将帮助您更好地了解问题的根源。
继续寻找解决方案:
如果您使用的是 Maven,则需要在 pom.xml 中添加以下依赖项:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
</dependency>
如果需要,可以将版本更改为找到的任何版本 here。
否则,您需要从同一个 link 下载 jar 并将其包含在您的项目依赖项中。
我正在尝试按照书中关于使用 JDBC 将程序连接到数据库的教程进行操作。我对 class 中第一段代码的作用感到困惑。当我 运行 代码时,我收到一条错误消息说 java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:8889/book_store
并且代码在 class 内的第一个块中抛出异常。我需要向项目添加某种依赖项或库吗?
如您所知,这是我第一次尝试使用数据库...
package com.apress.books.dao;
import com.apress.books.model.Author;
import com.apress.books.model.Book;
import com.apress.books.model.Category;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class BookDAOImpl implements BookDAO {
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException ex) {
}
}
private Connection getConnection() throws SQLException {
return DriverManager.getConnection("jdbc:mysql://localhost:8889/book_store",
"root", "password");
}
private void closeConnection(Connection connection) {
if (connection == null)
return; try {
connection.close();
} catch (SQLException ex) {
}
}
@Override
public void insert(Book book) {
}
@Override
public void update(Book book) {
}
@Override
public void delete(Long bookId) {
}
}
本质上这是一个 ClassNotFoundException。您的第一个 catch 子句是空的,因此,尽管异常被捕获,但您并未对其采取行动。至少,我会做这样的事情:
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException ex) {
throw ex;
}
}
这将帮助您更好地了解问题的根源。
继续寻找解决方案:
如果您使用的是 Maven,则需要在 pom.xml 中添加以下依赖项:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
</dependency>
如果需要,可以将版本更改为找到的任何版本 here。
否则,您需要从同一个 link 下载 jar 并将其包含在您的项目依赖项中。