工具和准备:

MYSQL 8.0jar包:

链接:https://pan.baidu.com/s/1O3xuB0o1DxmprLPLEQpZxQ 
提取码:grni

使用eclipse开发首先把jar包导入内库中

首先将jar包复制到项目src下,右击src点击build path然后会在Refrenced中看到jar包


本篇博客主要讲述jdbc的操作过程,每一步需要干什么,最后用代码实现一个有数据库的简易注册登录功能。

下面的代码能够对jdbc的执行过程有初步的了解。

大体分为以下几步:

首先进行注册驱动

可以使用  Driver driver=new com.mysql.cj.jdbc.Driver();   DriverManager.registerDriver(driver);  来进行注册驱动

也可以使用java反射技术采用别人的接口来进行注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");

接下来进行获取数据库连接

需要url,数据库用户名以及密码

通过DriverManager.getConnection(url, user, password)赋给Connection对象

注意:

mysql8.0的url以及mysql接口名称与mysql5.0发生了变化

mysql5.0:

Class.forName("com.mysql.jdbc.Driver");

String url="jdbc:mysql://localhost:3306/suzy";(suzy为我的数据库名称)

mysql8.0:

Class.forName("com.mysql.cj.jdbc.Driver");

String url="jdbc:mysql://localhost:3306/suzy?useSSL=false&serverTimezone=Asia/Shanghai";

接下来获取数据库操作对象

通过createstatement方法赋给Statement对象

接下来执行sql语句

自己构建sql语句通过executeQuery方法进行执行

接下来处理查询结果集

当rs.next为true的时候不断打印

最后将资源关闭

rs.close();   st.close();   conn.close();

了解jdbc执行过程代码如下:

package jdbcdemo;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JdbcTest01 { public static void main(String[] args) {
// TODO Auto-generated method stub
Statement st=null;
Connection conn=null;
ResultSet rs=null;
try
{
//1.注册驱动
/* Driver driver=new com.mysql.cj.jdbc.Driver();
DriverManager.registerDriver(driver);*/
Class.forName("com.mysql.cj.jdbc.Driver");
//2.获取数据库连接
String url="jdbc:mysql://localhost:3306/suzy?useSSL=false&serverTimezone=Asia/Shanghai";
String user="root";
String password="10086";
conn=DriverManager.getConnection(url, user, password);
//3.获取数据库操作对象
st=conn.createStatement();
//4.执行sql语句
String sql="select e.ename,e.sal from emp e";
rs=st.executeQuery(sql);
//5.处理查询结果集
while(rs.next())
{
String ename=rs.getString("ename");
double sal=rs.getDouble("sal");
System.out.println(ename+"||"+sal);
}
}
catch (Exception e)
{
e.printStackTrace();
}finally
{
if(rs!=null)
{
try
{
rs.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
if(st!=null)
{
try
{
st.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
if(conn!=null)
{
try
{
conn.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
} } }

使用jdbc实现一个简易的注册代码如下:

public class JdbcTest02 {

public static void main(String[] args) throws SQLException {
// TODO Auto-generated method stub
Scanner in =new Scanner(System.in);
System.out.println("欢迎来控制台进行注册");
System.out.println("请输入您要注册的用户名");
String name=in.nextLine();
System.out.println("请输入您的密码");
String pwd=in.nextLine();
Connection conn=null;
Statement st=null;
int count=0;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/suzy?useSSL=false&serverTimezone=Asia/Shanghai";
String user="root";
String password="10086";
conn=DriverManager.getConnection(url, user, password);
st=conn.createStatement();
String sql="insert into t_user(username,password) values('"+name+"','"+pwd+"')";
count=st.executeUpdate(sql);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally
{
if(st!=null)
{
st.close();
}
if(conn!=null)
{
conn.close();
}
}
if(count==1)
{
System.out.println("注册成功!!!");
}
else
{
System.out.println("注册失败!!!");
}
} }

注册界面效果图:

数据库相应的添加了刚才注册的信息

使用jdbc实现一个简易的登录代码如下:

public class JdbcTest03 {

public static void main(String[] args) throws ClassNotFoundException, SQLException {
// TODO Auto-generated method stub
Scanner in =new Scanner(System.in);
System.out.println("欢迎来控制台进行登录");
System.out.println("请输入您的用户名");
String name=in.nextLine();
System.out.println("请输入您的密码");
String pwd=in.nextLine();
Statement st=null;
Connection conn=null;
ResultSet rs=null;
PreparedStatement ps=null;
boolean flag=false;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
//2.获取数据库连接
String url="jdbc:mysql://localhost:3306/suzy?useSSL=false&serverTimezone=Asia/Shanghai";
String user="root";
String password="10086";
conn=DriverManager.getConnection(url, user, password);
//3.获取数据库操作对象
//st=conn.createStatement();
//4.执行sql语句
//String sql="select username from t_user where username='"+name+"' and password='"+pwd+"'";
//定义sql语句框架
String sql="select username from t_user where username= ? and password = ?";
//sql语句进行预编译
ps=conn.prepareStatement(sql);
//对sql语句进行赋值
ps.setString(1, name);
ps.setString(2, pwd);
rs=ps.executeQuery();
//rs=st.executeQuery(sql);
if(rs.next())
{
flag=true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally
{
if(rs!=null)
{
rs.close();
}
if(ps!=null)//st!=null
{
//st.close();
ps.close();
}
if(conn!=null)
{
conn.close();
}
}
if(flag)
{
System.out.println("登陆成功!!!");
}
else
{
System.out.println("您输入的用户名或密码错误");
} } }

登录界面效果如下:

可是发现用户名ss数据库并没有却能登陆成功,debug后发现这样的密码导致sql语句变为select username from t_user where (username='ss'  and password ='asdf') or 'kk'='kk',后面的'kk'='kk'是恒成立的,前面是or语句所以百分百执行

怎样解决这个bug呢:

采用预编译对象prepareStatement,定义sql框架使用?占位符,预编译之后进行Sql赋值

上述代码是解决bug之后的(有注释的是有bug时候的代码)

接下来运行发现得到正确的运行结果

jdbc执行过程 jar包下载的更多相关文章

  1. 构建Springboot项目、实现简单的输出功能、将项目打包成可以执行的JAR包(详细图解过程)

    1.构建SpringBoot项目 大致流程 1.新建工程 2.选择环境配置.jdk版本 3.选择 依赖(可省略.后续要手动在pom文件写) 4.项目名 1.1 图解建立过程 1.2 项目结构 友情提示 ...

  2. 2022最新版超详细的Maven下载配置教程、IDEA中集成maven(包含图解过程)、以及导入项目时jar包下载不成功的问题解决

    文章目录 1.maven下载 2.maven环境变量的配置 3.查看maven是否配置成功 4.配置文件的修改 5.IDEA集成maven 6.导入项目时jar包下载不成功的问题解决 maven教程: ...

  3. Spring框架针对dao层的jdbcTemplate操作crud之delete删除数据库操作 Spring相关Jar包下载

    首先,找齐Spring框架中IoC功能.aop功能.JdbcTemplate功能所需的jar包,当前13个Jar包 1.Spring压缩包中的四个核心JAR包,实现IoC控制反转的根据xml配置文件或 ...

  4. (转)Maven依赖的jar包下载不了、jar更新不了的解决办法

    场景一: 使用Maven的同学可能偶尔会遇到这种情况:pom.xml中依赖了项目需要的某个jar文件,但是使用Maven –> update project 还是没办法下载该jar到项目中,你可 ...

  5. [Maven]Maven构建可执行的jar包(包含依赖jar包)

    ----------------------------------------------------------------- 原创博文,如需转载请注明出处! 博主:疲惫的豆豆 链接:http:/ ...

  6. Maven Jar包下载失败及解决方案

    我是阿福,公众号「阿福聊编程」作者,一个在后端技术路上摸盘滚打的程序员,在进阶的路上,共勉! 文章已收录在 JavaSharing 中,包含Java技术文章,面试指南,资源分享. 明显的下载失败 具体 ...

  7. 用命令行编译java并生成可执行的jar包

    用命令行编译java并生成可执行的jar包 1.编写源代码. 编写源文件:CardLayoutDemo.java并保存,例如:I:\myApp\CardLayoutDemo.java.程序结构如下: ...

  8. json学习系列(1)-使用json所要用到的jar包下载

    内容来源于互联网. json是个非常重要的数据结构,在web开发中应用十分广泛.每个开发者都应该好好的去研究一下json的底层实现.在使用json之前首先要明白需要哪些jar文件,初次使用的时候很容易 ...

  9. 创建可执行的JAR包

    创建可执行的JAR文件包,需要使用带cvfm参数的jar命令,命令如下:JAR cvfm test.jar manifest.mf testtest.jar和manifest.mf为两个文件,分别对应 ...

随机推荐

  1. Android-事件处理机制(待补充)

    http://www.cnblogs.com/plokmju/archive/2013/03/13/2955175.html Android有两条事件处理机制 基于监听的事件处理 基于回调的事件处理 ...

  2. Google Kickstart在线测试规则以及注意事项

    谷歌招聘在如火如荼的进行中,进谷歌都需要经过谷歌kickstart在线测试,然后过了之后还有五轮的面试- -.好吧毕竟你待遇高,你强你有理.. 下面介绍一下进谷歌的第一关google kickstar ...

  3. for ...in 、for each ...in、 for...of(https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/for...of)

    1.for in for...in语句以任意顺序遍历一个对象的可枚举性.对于每个不同的属性,语句都会被执行. 语法 for (variable in object) {...} variable 在每 ...

  4. JS多级树结构写法

    效果: 一.布局: <div class="three_tree"> <div class="tree_title_cut"> < ...

  5. Highcharts - Bar Chart & Column Chart

    1. 条形图(Bar Chart)需要的数据格式类型如下: ["Luke Skywalker", "Darth Vader", "Yoda" ...

  6. postman接口案例

    接口测试 什么是接口(API) API全称Application Programming Interface,这里面我们其实不用去关注AP,只需要I上就可以.一个API就是一个Interface.我们 ...

  7. VBA注意事项

    以下是项目过程中遇到的坑,可能有些说明的部分不一定严谨,仅供参考 1.最好保存成 [*.xlsm]文件 2.注意 VBA 的参数类型,使用的参数如果未声明直接使用的话会出现类型不匹配的错误 3.代码写 ...

  8. 腾讯云微信小程序域名变更指南

    1 . 将域名添加到云解析里面, 将解析的地址指向已有的小程序负载均衡地址: https://console.qcloud.com/cns 将域名添加到解析列表 添加成功之后,点击解析按钮,添加二级域 ...

  9. Oracle服务端及客户端搭建帮助文档

    Oracle服务端及客户端搭建帮助文档 目录 简介 Oracle服务端安装 Oracle客户端安装 PLSQL安装 登录测试 系统配置修改 用户操作 解锁账户.密码 创建账户及密码 配置监听文件 监听 ...

  10. cocos2d-x3.1 下实现相似Android下ExpandListView的效果

    在左Android開始有SDK提供ExpandListView的可扩展列表,而在iOS下有很多第三方做好的Demo,这里我是參照iOS下RATreeView这个第三方库实现的. 本文代码:须要在3.1 ...