JDBC连接数据库详细步骤:
JDBC技术
JDBC是java连接数据库唯一的技术。JDBC提供了很多接口,不同的数据库处理方式不同。
mysql实现了JDBC接口,写好的代码封装成了jar包
问题:如何连接数据库?
每个步骤都运行一下!!!
每个步骤都运行一下!!!
每个步骤都运行一下!!!
前提:新建服务器
点击windows 选择最后一个
然后搜索server,点击server
点击runtime Environment,在选择点击add
选择下载的版本网址:http://tomcat.apache.org/
Browser选择你下载好的Apache Tomcat 版本的根路径,根路径就是下一文件就是bin文件了,
bin文件的母文件
配置成功
然后windos .选择最后一个
点击other后搜索server
点击server服务器右击
双击左边的
点击完成
启动他
重要的事情说三遍!!@每个步骤都运行一下!!!
步骤一:准备项目,新建一个动态web
步骤二:下载jar包 mysql-connector-java4.5
1. Oracle数据库的JDBC驱动包的网址
https://www.oracle.com/technetwork/database/features/jdbc/jdbc-drivers-12c-download-1958347.html
2. MySQL数据库的JDBC驱动包的网址
https://dev.mysql.com/downloads/connector/j/
步骤三:把jar包驱动复制到在Webcontent的字文件下的WEB-INF下,并且add path一下。
步骤四:在java resources 里面新建sevlet后台
注意不要直接点击完成
一步一步点击next,选择打钩的时候只保留 server。
步骤五:在java resources里面新建一个Sevlet。
在Web content复制注册和登录的JSP文件。(register.jsp logi.jsp)
链接:https://pan.baidu.com/s/11tkwKB-ZPNlQV0FATw-X8A
提取码:5res
复制这段内容后打开百度网盘手机App,操作更方便哦
步骤六:添加路径
在register.jsp文件中,对
<form class="login-form" action="【服务器所在的项目】/【服务器的路径】" method="post">
添加路径。
先在服务器的sever方法里面加一句
request.setCharicterEncoding("utf8")设置字符集的放乱码的命令
再对服务器进行获取数据(获取账号和密码...),还是用request分别获取账号和密码,最后的是对应的变量
是注册的的username 和password最后Ctrl键加 1快速补全代码.
<input name="username" type="text" class="form-control" id="exampleInputEmail1" placeholder="请输入用户名">。
★步骤七:注册驱动。
Class.forName("com.mysql.jdbc.Driver");//一般固定的格式。
★★★步骤八:@加载连接
先输入DriverMannger.getConnection
("jdbc:mysql://localhost:3306/【数据库名字】");
先运行一下。
★★★@@@注意:如果控制台出现:============================
Loading class `com.mysql.jdbc.Driver'.
This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'.
@@@@解决方案:
把新的路径替换到注册驱动的后边旧的包,
替换成了com.mysql.cj.jdbc.Driver
@@@===================================================
最后Ctrl键加 1快速补全代码.
运行一下:
★★★@@@@如何出现:
java.sql.SQLException: The server time zone value '?й???????' ...
@@@@解决方案:
把问题复制到百度,最后解决方案是
在("jdbc:mysql://localhost:3306/【数据库名字】")的后边加入
?serverTimezone=UTC&characterEncoding=utf-8
这是因为时区不一致导致的问题还可以直接在表的后边加入 ?serverTimezone=UTC
★★★步骤九:获取SQL执行的对象
connection.prepareStatement("insert into datas values (null,?,?)");
最后Ctrl键加 1快速补全代码.
在它的前面会生成 PreparedStatement pst=
添加问号里面的数值
pst.setString(1,【接受获取账号的参数】);
pst.setString(2,【接受获取密码的参数】);
最后别忘了关闭:【先打开的后关,后打开的先关原则】
pst.close();
con.close();
★★步骤十:转发 跳转页面‘
’
重定向:request.sendRedirect(【页面加后缀】);
转发:resquest.getRequestDispatcher(【页面加后缀】).forward(request, response);
步骤十一:新建一个数据库
我建的数据库是login_system
在这里新建一个数据表我的是datas;
用于存储数据
步骤十二:浏览器输入地址模拟注册
在浏览器上边输入: localhost:8080/Prictice_01/register.jsp
localhost:8080/项目名/register.jsp
点击注册数据库就会变化了
源码:
这个是我的服务器sevlet 的代码
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/**
* Servlet implementation class Prictice_1
*/
@WebServlet("/Prictice_1")
public class Prictice_1 extends HttpServlet {
private static final long serialVersionUID = 1L; /**
* @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
*/
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// http://localhost:8080/Prictice_01/register.jsp
//设置字符集
request.setCharacterEncoding("utf8");
// 获取数据
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println("账号:"+username+"\n密码:"+password);
try {
// 注册
Class.forName("com.mysql.cj.jdbc.Driver");
// 加载驱动:注意:root 和 123456是我的数据库账号和密码
Connection conn = DriverManager.getConnection
("jdbc:mysql://localhost:3306/login_system?serverTimezone=UTC","root","123456");
// 获取sql执行的对象 PreparedStatement:处理命令
PreparedStatement pre = conn.prepareStatement
("insert into datas values(null,?,?)");
// 设置问号里面的数值
pre.setString(1, username);
pre.setString(2, password);
// 执行命令!
pre.executeUpdate();
// 关闭
pre.close();
conn.close();
// 转发页面
request.getRequestDispatcher("login.jsp").forward(request, response);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/**
* Servlet implementation class Prictice_1
*/
@WebServlet("/Prictice_1")
public class Prictice_1 extends HttpServlet {
private static final long serialVersionUID = 1L; /**
* @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
*/
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// http://localhost:8080/Prictice_01/register.jsp
//设置字符集
request.setCharacterEncoding("utf8");
// 获取数据
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println("账号:"+username+"\n密码:"+password);
try {
// 注册
Class.forName("com.mysql.cj.jdbc.Driver");
// 加载驱动:注意:root 和 123456是我的数据库账号和密码
Connection conn = DriverManager.getConnection
("jdbc:mysql://localhost:3306/login_system?serverTimezone=UTC","root","123456");
// 获取sql执行的对象 PreparedStatement:处理命令
PreparedStatement pre = conn.prepareStatement
("insert into datas values(null,?,?)");
// 设置问号里面的数值
pre.setString(1, username);
pre.setString(2, password);
// 执行命令!
pre.executeUpdate();
// 关闭
pre.close();
conn.close();
// 转发页面
request.getRequestDispatcher("login.jsp").forward(request, response);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/**
* Servlet implementation class Prictice_1
*/
@WebServlet("/Prictice_1")
public class Prictice_1 extends HttpServlet {
private static final long serialVersionUID = 1L; /**
* @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
*/
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// http://localhost:8080/Prictice_01/register.jsp
//设置字符集
request.setCharacterEncoding("utf8");
// 获取数据
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println("账号:"+username+"\n密码:"+password);
try {
// 注册
Class.forName("com.mysql.cj.jdbc.Driver");
// 加载驱动:注意:root 和 123456是我的数据库账号和密码
Connection conn = DriverManager.getConnection
("jdbc:mysql://localhost:3306/login_system?serverTimezone=UTC","root","123456");
// 获取sql执行的对象 PreparedStatement:处理命令
PreparedStatement pre = conn.prepareStatement
("insert into datas values(null,?,?)");
// 设置问号里面的数值
pre.setString(1, username);
pre.setString(2, password);
// 执行命令!
pre.executeUpdate();
// 关闭
pre.close();
conn.close();
// 转发页面
request.getRequestDispatcher("login.jsp").forward(request, response);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}