首先我们知道在数据库中,我们可以直接写sql或者直接通过数据库工具操作数据,但是在java程序中我们是不能直接操作数据库数据的,所以这就引入了jdbc操作。

百度百科:JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。

简单地说,JDBC 可做三件事:与数据库建立连接、发送 操作数据库的语句并处理结果;

连接

connection  接口, 相当于连接数据库的桥梁

connection是不能实例化自己的,所以得通过实现类来实例化对象

这里就引入了DriverManager.getConnection(url,username,password) 来获取连接对象

connection  conn=DriverManager.getConnection(url,username,password);//url 是连接的数据库地址,username是数据库名称,password是数据库密码

这里的conn就是我们得到的连接数据库的 "桥梁"!!!

发送 操作数据库的语句

获得conn之后我们要干嘛?肯定是写sql语句来管理我们数据库的数据啊!

这里呢 我们又引入了 statement 和PreparedStatement 这两个接口

statement

statement 也是一个接口,他的作用是通俗的来说就是实现你写的sql语句,当人因为它也是一个接口,所以我们通过conn.createStatement()来获取他的实例

例子:

Connection conn=DataUtil.getConnection();
String sql="select * from students";
Statement st=conn.createStatement();
ResultSet rs=st.executeQuery(sql);
while(rs.next()){
System.out.println(rs.getString("name"));
}

通过控制台输出 从数据库students这张表中获得的 数据的name属性的值

PreparedStatement

PreparedStatement其实是statement接口的子接口,并对statement进行扩展,他的实例通过conn.preparedstatement(sql)来获得的

例子:

Connection conn=DataUtil.getConnection();
String sql="select * from students";
PreparedStatement ps=conn.prepareStatement(sql);
ResultSet rs=ps.executeQuery();
while(rs.next()){
System.out.println(rs.getString("name"));
}

运行结果:

那么有同学就会问了 statement 和 preparedstatement 有什么区别啊?

网上说了好多区别,但是我看来最大的一点区别就是安全性 更好

传统的statement 来说很容易 被sql注入,安全性很差 ,那么我举个例子来说吧:

当我们在写登陆 功能时 最常用的 sql 就是:select * from  table username=? and password=?

输入正确的username和password时我们就能从数据库中找出记录,并且成功登陆!

但是 当前台登陆界面 的 用户名 他随便 输一个,在密码栏 输入  任意的一个字符+空格+or 1=1 的话

后台拼接的sql就变成了 :select *from table username=随便 and password=随便 or1=1;

我们知道1=1永远都是成立的,所以 这个登陆就算我们没有用户名和密码同样也是可以进入的。

所以现在 我们开发都是用preparedstatement 来进来的,因为它不再是直接执行sql。而是进行一步预编译,预编译是不允许改变操作逻辑的,就是说你是2个参数 就是2个参数

不能再传入多的参数了,所以这里的sql注入就不会发生了!

而且因为preparedstatement存在预编译这一步,所以效率比statement接口更高,所以同学们咱们就忘记statement就可以了!

基础的jdbc连接数据库操作的更多相关文章

  1. 学习笔记-JDBC连接数据库操作的步骤

    前言 这里我就以JDBC连接数据库操作查询的步骤作以演示,有不到之处敬请批评指正! 一.jdbc连接简要步骤 1.加载驱动器. 2.创建connection对象. 3.创建Statement对象. 4 ...

  2. JDBC连接数据库操作

    JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.l ...

  3. java中JDBC连接数据库操作的基本步骤

    JDBC基本步骤 创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lan ...

  4. jdbc连接数据库工具包模板

    jdbc连接数据库操作 jdbc连接数据库模板,收藏可做模板使用(小型工程,一般大工程都会用框架,c3p0等连接,不考虑此种方法!). 配置文件的使用(使用配置文件可以使我们后期的修改更加方便,当然, ...

  5. Java操作数据库——使用JDBC连接数据库

    Java操作数据库——使用JDBC连接数据库 摘要:本文主要学习了如何使用JDBC连接数据库. 背景 数据持久化 数据持久化就是把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,特别是企业级应 ...

  6. 【Mybatis源码解析】- JDBC连接数据库的原理和操作

    JDBC连接数据库的原理和操作 JDBC即Java DataBase Connectivity,java数据库连接:JDBC 提供的API可以让JAVA通过API方式访问关系型数据库,执行SQL语句, ...

  7. JAVA采用JDBC连接操作数据库详解

    JDBC连接数据库概述 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供 ...

  8. JDBC连接数据库经验技巧(转)

    Java数据库连接(JDBC)由一组用 Java 编程语言编写的类和接口组成.JDBC 为工具/数据库开发人员提供了一个标准的 API,使他们能够用纯Java API 来编写数据库应用程序.然而各个开 ...

  9. 使用JDBC连接操作数据库

    JDBC简介 Java数据库连接(Java Database Connectivity,JDBC),是一种用于执行SQL语句的Java API,它由一组用Java编程语言编写的类和接口组成. JDBC ...

随机推荐

  1. elasticsearch5.0及head插件安装

        这个瞎jb整了半天.准备把es2.4升级到5.0,结果老报错 环境:centos6.5+es2.4是ok的换成es5就出毛病.也不能说啥 ,我用的是最新的 源码解压启动时候报错,具体错误for ...

  2. [开源].NET高性能框架Chloe.ORM-完美支持SQLite

    扯淡 这是一款轻量.高效的.NET C#数据库访问框架(ORM).查询接口借鉴 Linq(但不支持 Linq).借助 lambda 表达式,可以完全用面向对象的方式就能轻松执行多表连接查询.分组查询. ...

  3. WPF简单模拟QQ登录背景动画

    介绍 之所以说是简单模拟,是因为我不知道QQ登录背景动画是怎么实现的.这里是通过一些办法把它简化了,做成了类似的效果 效果图 大体思路 首先把背景看成是一个4行8列的点的阵距,X轴Y轴都是距离70.把 ...

  4. NDT(Normal Distribution Transform) 算法(与ICP对比)和一些常见配准算法

    原文地址:http://ghx0x0.github.io/2014/12/30/NDT-match/ By GH 发表于 12月 30 2014 目前三维配准中用的较多的是ICP迭代算法,需要提供一个 ...

  5. CSS你可能还不知道的一些知识点

    一.特殊选择器 1.* 用于匹配任何的标记 2.> 用于指定父子节点关系 3.E + F 毗邻元素选择器,匹配所有紧随E元素之后的同级元素F 4.E ~ F 匹配所有E元素之后的同级元素F 5. ...

  6. 关于label的点击事件(原创)

    通常做网页时不会用radio和checkbox的原有样式,通常会进行样式美化,手机端我用的jqurey weui框架,他的原理是这样的: <label class="check_lab ...

  7. jquery $.extend()扩展插件获取焦点或失去焦点事件

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  8. QGEditors.WinForms WinForms下使用的部分扩展控件

    Nuget: https://www.nuget.org/packages/QGEditors.WinForms/ PM> Install-Package QGEditors.WinForms ...

  9. install hadoop on xubuntu

    0. install xubuntu we recommend to set username as "hadoop" after installation, set user & ...

  10. Unity Animator动画状态机 深入理解(二)IK控制

    IK还是一个很神奇和实用的东西啊,起码可以用代码来控制人物骨骼位置还是很爽的.因为不是动画师~ 这篇可能跟Animator没啥关系了哈,都是代码层的. 看了一官方的案例,老的,有些问题,自己修改了一下 ...