工具和准备:

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. Vue element-ui:滚动条 分页 禁用选项

    1.滚动条设置: <el-scrollbar style="height:100%;">.......</el-scrollbar> 默认会同时出现水平和垂 ...

  2. 关于i 标签盛放背景图像

    1.html部分 <div class="hover right"> <i class="log_change state_psd">& ...

  3. VC++中对数据类型的限制limits.h文件内容

    limits.h文件中规定了是IDE在OS中规定了每个数据类型的最大值和最小值以及在程序源代码中编译时候所占用的字节数,这这样做有利于帮助程序员在编写程序的时候有效控制在选择合适数据类型的显示范围值. ...

  4. 转:什么是4D(DRG、DLG、DOM、DEM)数据?

    ps:摘抄地址http://blog.163.com/wangqing_rs/blog/static/16451519120111026102916472/  什么是4D(DRG.DLG.DOM.DE ...

  5. struts-config.xml 中 action 与 forward 的重要属性

    1.forward 的 redirect 可以为true.false(默认).yes.no true和yes一样,false和no一样: redirect="false",容器内跳 ...

  6. RAC常用日志总结

    12C RAC:ocssd启动失败log目录:/u01/app/grid/diag/crs/host02/crs/trace/alert.log  

  7. IOS 社交分享

    #import <Social/Social.h> @interface HMViewController () @end @implementation HMViewController ...

  8. Uva 12298 超级扑克2

    题目链接:https://vjudge.net/problem/UVA-12298 题意: 1.超级扑克,每种花色有无数张牌,但是,这些牌都是合数:比如黑桃:4,6,8,9,10,,,, 2.现在拿走 ...

  9. VOJ1067 【矩阵经典7 构造矩阵】

    任意门:https://vijos.org/records/5be95b65d3d8a1366270262b 背景 守望者-warden,长期在暗夜精灵的的首都艾萨琳内担任视察监狱的任务,监狱是成长条 ...

  10. set 和select 的区别

    简单赋值是没有区别的