创建mysql数据库连接

发布时间: 2023-11-21 11:04 阅读: 文章来源:1MUMB875PS

操作系统:win10

Tomcat版本:8.0

Jdk以及Jre版本:1.8.0

MySQL驱动包版本:8.0.11

在自学Servlet过程中,都是通过网上的教程和自己的买的书,但是由于教程和书上的大多数的版本都比较低,所以基本上在敲完例程之后,基本上都是会报错的,因为各种版本不兼容的问题。所以将各种错误记录在这里,能让自己以后翻阅,如果可以帮到别人那当然是最好的了。

首先,先创建数据库以及表。

这里是通过命令行来创建的数据库,内容如下:

创建了 id,name,url,country 四个字段。

这里要注意的是,我建立的数据库名称为:webdb。

接下来,就是创建 servlet文件。

我是在com.test包下创建的DataBaseTest.java文件

servlet代码如下

package com.test; import java.io.PrintWriter;import java.io.IOException;import java.sql.*; import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class DataBaseTest */ public class DataBaseTest extends HttpServlet {private static final long serialVersionUID = 1L; // 设置JDBC驱动名及数据库 URLstatic final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; // 如果MySQL的驱动版本太低的话,这里应该改成 com.mysql.jdbc.Driver /** * @see HttpServlet#HttpServlet() */ public DataBaseTest() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) * 重写doGet方法 */protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubConnection connection = null;Statement statement = null;// 设置响应类型内容response.setContentType("text/html;charset=UTF-8");PrintWriter out = response.getWriter();String title = "Servlet 测试 Mysql 数据库连接";String docType = "\n";out.println(docType+"\n"+""+title+"\n"+"\n"+""+title+"\n");try {// 注册 JDBC 驱动器Class.forName("com.mysql.cj.jdbc.Driver");// 打开一个数据库连接connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/webdb?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false","root","123456");// 执行 SQL 查询statement = connection.createStatement();String sql;sql = "select id,name,url,country FROM WebDB"; // ResultSet rs = statement.executeQuery(sql);// 展开结果集数据库while(rs.next()) {// 通过字段检索int id = rs.getInt("id");String name = rs.getString("name");String url = rs.getString("url");String country = rs.getString("country");// 输出数据out.println("ID:"+id);out.println("站点名称:"+name);out.println("站点URL:"+url);out.println("属于国家:"+country);out.println("");}out.println("");// 完成之后关闭操作rs.close();statement.close();connection.close();} catch (SQLException se) {// 处理JDBC的错误se.printStackTrace();} catch (Exception e) {// TODO Auto-generated catch block// 这里是用来处理class.forName的错误的e.printStackTrace();}finally {// 最后用于关闭资源的块try {if(statement!=null)statement.close();} catch (SQLException se2) {// TODO: handle exception}try {if(connection!=null)connection.close();} catch (SQLException se) {// TODO: handle exceptionse.printStackTrace();}}} /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);} }

接下来,再配置web.xml文件

DataBaseTest com.test.DataBaseTest // 需要编译成.class文件的类所在的包 DataBaseTest // 要和上面的类名相同 /TomCat/DataBaseTest // 浏览器访问的地址

到这里,就创建好了一个简单的Servlet连接MySQL数据库。

这里有几个容易报错的点,需要说明一下,不然有可能会出现Tomcat运行不起来的情况。

首先,最重要的是版本号,要匹配,某一部分版本太高或者太低,可能都会导致Tomcat无法运行起来。

其次:

// 打开一个数据库连接 connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/webdb?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false","root","123456");

对于这一句,getConnection()方法有三个参数,第一个是数据库的链接,第二个是数据库的用户名,第三个是数据库的密码。这些都基于你自己安装的时候所创建的。

如果你的程序报错了,查看报错的内容是:

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.

这是因为MySQL版本过高的情况导致的,SSL是一种加密技术,如果看到这个报错,那就需要你在数据库链接后面加上useSSL=false即可。如上面我贴出来的代码。

•••展开全文