Tomcat启动报错 No suitable driver found for jdbc:mysql://localhost:3306……
程序员文章站
2022-06-15 13:45:34
...
问题原因:
现这个异常原因可能很多:
1.编码问题
2.没有加载类驱动:换一种数据库的连接方式,就忘了这个:Class.forName(driverclass);
问题排查:
//检查url是否正确,驱动字符串是否正确
private static final String url="jdbc:mysql://localhost:3306/数据库?useUnicode=true&characterEncoding=utf-8";
如果使用的mysql,驱动字符串为Class.forName(com.mysql.jdbc.Driver);
是否在buildpath导入mysql_jdbc驱动,版本是否匹配
jar包位置是否正确
附上一段标准的代码,演示内容不必关心!!!
package com.zch.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
/**
*
* @ClassName: Example03.java
* @Description: 演示滚动结果集
* @author 萌城小小小少年
* @version V1.0
* @Date 2019年2月13日 上午10:33:15
*
*/
public class Example03 {
public static void main(String[] args) {
Connection con=null;
Statement st=null;
ResultSet rs=null;
try {
//1.注册和加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2.获取连接
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc", "root","201314");
//3.获取执行sql语句的对象,支持滚动结果集
st=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
//4.执行sql语句
String sql="select * from users";
rs=st.executeQuery(sql);
//5.遍历结果集
//演示直接获取第二行的数据
rs.absolute(2);
System.out.println("获取第二行的值"+rs.getString(2));
//获取第一行的值
rs.beforeFirst();//把光标定位到第一行的前面
rs.next(); //把光标跳转到第一行
System.out.println("获取第一行的值:"+rs.getString("name"));
//演示获取第四行的值
rs.afterLast();//把光标放到最后一行的后面
rs.previous();//把光标移动到最后一行上面
System.out.println("获取最后一行的值:"+rs.getString(2));
} catch (Exception e) {
// TODO: handle exception
throw new RuntimeException(e);
}finally {
//关闭资源
if(rs!=null) {
try {
rs.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
rs=null;
}
if(st!=null) {
try {
st.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
st=null;
}
if(con!=null) {
try {
con.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
con=null;
}
}
}
}