JDBC程序步骤
1. 搭建数据库环境:
打开MySQL服务后,新建一个数据库,我这里命名为lab_3,可以直接通过navicat创建:
然后在这个数据库中可以建立一些表,我这里建立了一个命名为Student的表。
2.创建项目环境,导入数据库驱动
为了保险起见(防止程序找不到驱动的地址),我们建立一个lib文件放mysql-connector-java的驱动,右键项目名称,后如下图选择:
建立一个lib文件后,去mysql官网下载这个驱动,就是这个jar包,这个jar包非常小,秒速下完,不用担心。
mysql-connector-java驱动链接,点击传送[5.1.49版本哦]
mysql-connector-java驱动链接,点击传送[8.0.20版本哦]
然后点击下边的zip包下载就好啦,操作步骤如下:
下载完之后解压,然后把驱动复制到lib文件中
就会如此图所示,只需要一个驱动就可以,我这里放了两个
然后添加路径:右击项目,如下选择后
点击后选择想要加入的驱动即可,再次强调,两个驱动加任意一个就行
完成后应该如下图所示:
3.编写JDBC程序
两个驱动的差别
mysql-connector-java 5.xx版本
- 在Class.forName(“com.mysql.jdbc.Driver”);
- String url=“jdbc:mysql://localhost:3306/lab_3 ?useSSL=false”;//考虑到SSL协议安全性问题
mysql-connector-java 8.xx版本
1.在Class.forName(“com.mysql.cj.jdbc.Driver”);
url问题自行百度解决,没用8版本,没去看
import java.sql.*;
public class javaJdbc {
public static void main(String[]args)throws SQLException{
Connection conn =null;
Statement stmt =null;
ResultSet rs=null;
try {
Class.forName("com.mysql.jdbc.Driver"); //加载数据库驱动
String url="jdbc:mysql://localhost:3306/lab_3?useSSL=false";
String username="root";
String password="123456";
conn = DriverManager.getConnection(url,username,password);//获取数据库连接
stmt = conn.createStatement();//通过connection获得statement对象
}
catch(Exception ecp){
ecp.printStackTrace();
}
finally {
if(conn!=null)conn.close();
if(stmt!=null)stmt.close();
if(rs!=null)rs.close();
}
}
}
可能出现的问题:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:171)
at com.itheima.jdbc.javaJdbc.main(javaJdbc.java:13)
出现如上情况一般是导入数据库驱动的时候出现问题,检查一下驱动是否放在工程文件的同一个目录下的lib中,导入过程是否正确,是否结果如下图所示:
后边的哪个绝对地址是我的工程文件的地址,每个人的不一样。
如果出现以下错误
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/mysql/cj/jdbc/Driver : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:171)
at com.itheima.jdbc.javaJdbc.main(javaJdbc.java:13)
应该是你jdk或者jre版本太低了,不能用版本太高的驱动,你可以试试mysql-connecotor-java 5.0.xx的版本。
如果还是解决不了问题,那就该检查检查你的程序是不是存在手误,比如加了空格,分号,大小写错误等问题。
如果写完之后出现这个问题
Wed May 20 12:21:00 CST 2020 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
估计这个地方SSL安全问题
String url=“jdbc:mysql://localhost:3306/lab_3 ?useSSL=false”;
但愿所有人都能解决梦寐以求的问题