如何连接到Java中的MySQL数据库?

当我try 时,我得到

java.sql.SQLException: No suitable driver found for jdbc:mysql://database/table
    at java.sql.DriverManager.getConnection(DriverManager.java:689)
    at java.sql.DriverManager.getConnection(DriverManager.java:247)

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver

推荐答案

DriverManager是一种相当古老的做事方式.更好的方法是获得DataSource,或者通过查找您的应用服务器容器已经为您配置的:

Context context = new InitialContext();
DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc/myDB");

或者直接从数据库驱动程序实例化和配置一个:

MysqlDataSource dataSource = new MysqlDataSource();
dataSource.setUser("scott");
dataSource.setPassword("tiger");
dataSource.setServerName("myDBHost.example.org");

然后从中获取连接,同上:

Connection conn = dataSource.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT ID FROM USERS");
...
rs.close();
stmt.close();
conn.close();

Java相关问答推荐

为什么接口中的主函数而不是类中的主函数在Java 17中编译和运行没有问题?

OpenJDK、4K显示和文本质量

转换为Biggram

在Java Stream上调用collect方法出现意外结果

使用@MappdSuperClass扩展ParentClass&Won t继承ParentClass属性

为什么不应用类型推断?

是否在允许数组元素为空时阻止 idea 为空性警告?

名称冲突具有相同的擦除

从LineChart<;字符串、字符串和gt;中删除数据时出现特殊的ClassCastException;

有谁能帮我修一下这个吗?使输出变得更加整洁

FETCH类型设置为LAZY,但它仍会发送第二个请求

如何使用MapStrCut转换双向链接

在ECLIPSE上的M1 Pro上运行JavaFX的问题

我该如何为我的类编写getter和setter方法?

JOOQ:批处理CRUD操作使用动态表定义,如何?

如何在单元测试中获得我的装饰Mapstruct映射器的实例?

无泄漏函数的Java DRY

JavaFX中ListView中的问题

双对象供应商

使用DynamoDB增强客户端时未更新属性