JDBC_入门及注入问题
.JDBC基本概念:
java database Connectivity java数据库连接,java语言操作数据库
本质:
官方定义的一套操作所有关系型数据库的规则,即接口。
各个数据库厂商实现这套接口,提供数据库驱动jar包。
我们是以这套接口编程,真正执行的代码是驱动jar包中的实现类
.快速入门:
步骤:
.导入驱动jar包
.注册驱动
Class.
.获取数据库连接对象 Connection
.定义sql
.获取执行sql语句的对象 Statement
.执行sql,接收返回结果
.处理结果
.释放资源
.JDBC各个接口和类的详解:
.DriverManager:驱动管理对象
功能:
.注册驱动:
Class.forName("com.mysql.jdbc.Driver");
mysql5之后驱动jar包可以省略注册驱动的步骤
.获取数据库连接
static Connection getConnection(String url, String user, String password)
参数:
url:指定连接的路径
jdbc:mysql://ip地址(域名):端口号/数据库名称
user:用户名
password:密码
.connection: 数据库连接对象
.功能:
.获取执行sql的对象
Statement createStatement()
PreparedStatement prepareStatement(String sql)
.管理事务:
开启事务:void setAutoCommit(boolean autoCommit):调用该方法设置参数为false,即开启事务
提交事务:void commit()
回滚事务:void rollback()
.statement: 指定sql的对象
.boolean execute(String sql):可以执行任意sql 了解
.int executeUpdate(String sql):执行DML(insert update delete)语句、DDL(create alter drop)语句
.ResultSet executeQuery(String sql):执行DML(insert update delete)语句、DDL(create alter drop)语句
返回值:影响的行数
.ResultSet:结果集对象
.boolean next():游标向下移动一行
.getXxx():获取数据 Xxx:数据类型
.getXxx(参数):
int:列的编号从1开始
String:列名称
注意:
使用步骤:
.游标向下移动一行
.判断是否有数据 使用next的返回值判断
.获取数据
.PreparedStatement:执行sql的对象
.SQL注入问题:在拼接sql时有一些sql特殊关键字参与拼接回造成安全性问题
.输入用户名随意,输入密码:a' or 'a' = 'a
.解决sql注入问题:使用PreparedStatement对象来解决
.预编译的sql:参数使用?作为占位符
.步骤:
.写sql语句使用占位符
.Connection.prepareStatement(String sql)
.给?赋值:.setXxx(参数1,参数2)
参数1:?的位置
参数2:?的值
.执行sql不需要参数
*/
import java.sql.*;
public class JDBC_Test01 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
.注册驱动
Class.forName("com.mysql.jdbc.Driver");
.获取数据库连接对象 Connection
Connection connection /day01","root","ROOT");
.定义sql
String sql = "show tables";
.获取执行sql语句的对象 Statement
Statement statement = connection.createStatement();
.执行sql,接收返回结果
int count = statement.executeUpdate(sql);
.处理结果
System.out.println(count);
.释放资源
connection.close();
JDBC_入门及注入问题的更多相关文章
- 初级安全入门——XSS注入的原理与利用
XSS的简单介绍 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击者 ...
- 初级安全入门——SQL注入的原理与利用
工具简介 SQLMAP: 一个开放源码的渗透测试工具,它可以自动探测和利用SQL注入漏洞来接管数据库服务器.它配备了一个强大的探测引擎,为最终渗透测试人员提供很多强大的功能,可以拖库,可以访问底层的文 ...
- 基础Web漏洞-SQL注入入门(手工注入篇)
一.什么是SQL注入 SQL是操作数据库数据的结构化查询语言,网页的应用数据和后台数据库中的数据进行交互时会采用SQL.而SQL注入是将Web页面的原URL.表单域或数据包输入的参数,修改拼接成SQ ...
- Spring入门-----------------属性注入和对象注入
属性注入即通过setter方法注入bean的属性或依赖对象. 属性注入使用<property>元素,使用name属性指定bean的属性的名称,value属性或<value>子节 ...
- PHP代码审计入门(SQL注入漏洞挖掘基础)
SQL注入漏洞 SQL注入经常出现在登陆页面.和获取HTTP头(user-agent/client-ip等).订单处理等地方,因为这几个地方是业务相对复杂的,登陆页面的注入现在来说大多数是发生在HTT ...
- CTF SSTI(服务器模板注入)
目录 基础 一些姿势 1.config 2.self 3.[].() 3.url_for, g, request, namespace, lipsum, range, session, dict, g ...
- LDAP注入介绍
LDAP注入介绍 一. 前言 前些日子在看 OWASP TOP 10 时看到了对LDAP注入攻击的介绍,对此产生了兴趣,在网上经过一番搜索之后找到了构成本文主要来源的资料,整理出来分享给大家. 二. ...
- 紧跟时代步伐,让我们拥抱MVC 3
作为一个开发者,我们不希望技术很快的更新,这是因为我们还没有完全掌握原来技术的基础上,又要掌握新的技术,作为天天忙忙碌碌的程序员,我们不希望还要额外的时间来学习,尤其是当我们的年龄,逐渐的变大的时候, ...
- 4.JDBC编程
01.JDBC_Java程序和MySQL的关系: 1).Java程序跟其它MySQL客户端一样,就是一个"客户端",用于"封装SQL语句"并发送给MyS ...
随机推荐
- 制作Lightbox效果
制作Lightbox效果 Lightbox是网页上常用的一种效果,比如单击网页上某个链接或图片,则整个网页会变暗,并在网页中间弹出一个层来.此时,用户只能在层上进行操作,不能在单击变暗的网页. 程序代 ...
- jsp+servlet中文乱码问题
jsp+servlet中文乱码问题 servlet想要获得前台传来的值 String strName=new String(request.getParameter("name") ...
- Dubbo入门到精通学习笔记(十二):Dubbo消费端直连提供者(开发调试)、Dubbo服务只订阅(开发调试)、Dubbo服务只注册
文章目录 Dubbo消费端直连提供者(开发调试) Dubbo服务只订阅(开发调试) Dubbo服务只注册 Dubbo消费端直连提供者(开发调试) Dubbo 官方文档: 用户指南 >> 示 ...
- Xen的半虚拟化(Paravirtualization)
三个特权级 IA-32体系提供了4个特权级别,正常情况下只用了2个, 操作系统运行在Ring 0,而应用程序运行在Ring 3. Xen让自己运行在Ring 0, 而操作系统运行在Ring 1, 应用 ...
- POJ 1873 UVA 811 The Fortified Forest (凸包 + 状态压缩枚举)
题目链接:UVA 811 Description Once upon a time, in a faraway land, there lived a king. This king owned a ...
- error C3867: “std::basic_string<char,std::char_traits<char>,std::allocator<char>>::c_str”: 函数调用缺少参数列表;请使用“&std::basic_string<char,std::char_traits<char>,std::allocator<char>>::c_str”创建指向成员的指针
这个问题找了很多没有找到满意的答案.仔细看了一下,是使用了c_str的问题. 我直接把使用string.c_str的地方使用char*代替即解决问题.
- 随笔-ansible-6
Ansible中的变量引用有时候需要双引号,有时候不需要双引号,这是因为Ansible是多人协作的作品,所以没有统一. 一切以官网说明为主,同时自己也要实践. 这是一个example.yml文件,我们 ...
- HTML 自定义元素教程
组件是 Web 开发的方向,现在的热点是 JavaScript 组件,但是 HTML 组件未来可能更有希望. 本文就介绍 HTML 组件的基础知识:自定义元素(custom elements). 文章 ...
- usermod -修改使用者帐号
总览 SYNOPSIS usermod [-c comment] [-d home_dir [-m]] [-e expire_date] [-f inactive_time] [-g initial_ ...
- vue生态系统之vuex
一.webpack生成项目 1.webpack 在需要建立项目的目录中进行初始化项目 E:\vueProject>vue init webpack vuexpj ? Project name v ...