MySQL学习(一)——Java连接MySql数据库

  • API详解: 获得语句执行

String sql = "Insert into category(cid, cname) values('c007', '分类')";
Statement 语句执行者代码: Statement stmt = con.createStatement();

常用方法:

  • 执行SQL语句

    • int executeUpdate(String sql): ——执行insert, update delete 语句.(DML语句)

    • ResultSet executeQuery(String sql);——执行select语句. (DQL语句)

    • boolean execute(String sql);——执行select返回true执行其他的语句返回false

      • 返回true, 需要使用getResultSet()获得查询结果

      • 返回false, 需要使用getUpdateCount() 获得影响行数

  • 执行批处理:

    • addBatch(String sql);

    • clearBatch();

    • executeBatch();

  • API详解: 处理结果集

rs.next();    //光标移动到下一个行
rs.getInt(1); //获取第几列
  • API详解: 释放资源

rs.close();
rtmt.close();
con.close();
  • 登录实例

package cn.Douzi.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.junit.Test;


public class TestLogin {

/**
* 用户登录方法
* @param username
* @param password
* @throws ClassNotFoundException
* @throws SQLException
*/
public void login(String username, String password) throws ClassNotFoundException, SQLException
{
//1.注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2. 获取连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/books", "root", "sky");
//3.创建执行sql语句对象
Statement stmt = conn.createStatement();
//4.书写一个sql语句
String sql = "select * from user where "+"username='"+username+"' and password='"+password+"'";
//5.执行sql语句
ResultSet rs = stmt.executeQuery(sql);
//6.对结果集进行处理
if (rs.next()) {
System.out.println("恭喜你," + username + ", 登录成功!");
}
else {
System.out.println("账号或密码错误");
} if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close(); } @Test
public void testLogin() {
try {
login("Douzi", "skylove1230");
} catch (ClassNotFoundException | SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

SQL注入问题

下面这个也可以执行成功

因为执行的时候,sql语句是拼接进去的

@Test
public void testLogin() {
try {
login("douzi' or 'jdouzi", "skylove1230");
} catch (ClassNotFoundException | SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
  • 防止SQL攻击

  • 过滤用户输入的数据中释放包含非法字符;

  • 分步校验! 先使用用户名来查询用户, 如果找到了,再比较密码;

  • 使用 PreparedStatement

  • PreparedStatement

叫做 预处理声明

PreparedStatement是Statement的子接口

  • 防止SQL攻击

  • 提高代码的可读性,以可维护性;

  • 提高效率

  • PreparedStatement的使用(解决Sql注入问题)

public void login1(String username, String password) throws ClassNotFoundException, SQLException
{
//1.注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2.获取连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/books", "root", "skylove1230");
//3.编写sql语句
String sql = "select * from user where username=? and password=?";
//4.创建预处理对象
PreparedStatement pstmt = conn.prepareStatement(sql);
//5.设置参数(给占位符)
pstmt.setString(1, username);
pstmt.setString(2, password);
//6.执行查询
ResultSet rs = pstmt.executeQuery(); //6.对结果集进行处理
if (rs.next()) {
System.out.println("恭喜你," + username + ", 登录成功!");
}
else {
System.out.println("账号或密码错误");
} if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
}

下面语句则不能通过

@Test
public void testLogin() {
try {
login1("douzi' or 'jdouzi", "sky");
} catch (ClassNotFoundException | SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }

MySQL学习(一)——Java连接MySql数据库的更多相关文章

  1. MySQL学习(三)——Java连接MySQL数据库

    1.什么是JDBC? JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库.原来我们操作数据库是在控制台使用SQL语句来操作数据 ...

  2. Java 连接 MySQL 数据库

    最近想学习一下 Java 连接 MySQL 数据库,于是有了这样的一些问题&解决办法. 首先是解决 JDBC(Java Data Base Connectivity)驱动问题,因为默认安装的J ...

  3. java连接mysql数据库详细步骤解析

    java连接mysql数据库详细步骤解析      第一步:下载一个JDBC驱动包,例如我用的是:mysql-connector-java-5.1.17-bin.jar      第二步:导入下载的J ...

  4. Java连接MySQL数据库及简单操作代码

    1.Java连接MySQL数据库 Java连接MySql需要下载JDBC驱动MySQL-connector-java-5.0.5.zip(举例,现有新版本).然后将其解压缩到任一目录.我是解压到D盘, ...

  5. 转载:Java连接MySQL 数据库的正确操作流程

    转载网址:http://www.bitscn.com/pdb/mysql/201005/186551.html       以下的文章主要介绍的是Java连接MySQL 数据库(以MySQL数据库为例 ...

  6. Java连接MySQL数据库增删改查通用方法

    版权声明:本文为博主原创文章,未经博主允许不得转载. Java连接MySQL数据库增删改查通用方法 运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类 ...

  7. 【JDBC】Java 连接 MySQL 基本过程以及封装数据库工具类

    一. 常用的JDBC API 1. DriverManager类 : 数据库管理类,用于管理一组JDBC驱动程序的基本服务.应用程序和数据库之间可以通过此类建立连接.常用的静态方法如下 static ...

  8. Java进阶(二十五)Java连接mysql数据库(底层实现)

    Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜 ...

  9. java连接MySql数据库 zeroDateTimeBehavior

    JAVA连接MySQL数据库,在操作值为0的timestamp类型时不能正确的处理,而是默认抛出一个异常, 就是所见的:java.sql.SQLException: Cannot convert va ...

随机推荐

  1. 校园跳蚤市场-Sprint计划(第二阶段)

  2. BETA-5

    前言 我们居然又冲刺了·五 团队代码管理github 站立会议 队名:PMS 530雨勤(组长) 过去两天完成了哪些任务 前一份代码方案全部垮掉,我,重构啦 接下来的计划 加速加速,一定要完成速度模块 ...

  3. iOS开发 tableView点击下拉扩展 + 内嵌collectionView上传图片效果

    ---恢复内容开始--- //需要的效果 1.设置window的根视图控制器为一个UITableViewController #import "AppDelegate.h"#imp ...

  4. 软工网络15团队作业8——Beta阶段敏捷冲刺(day1)

    第 1 篇 Scrum 冲刺博客 1. 介绍小组新加入的成员,Ta担任的角色 --给出让ta担当此角色的理由 小组新加入的成员:3085叶金蕾 担任的角色:测试/用户体验/开发 理由:根据小组讨论以及 ...

  5. Teamcity部署.net服务“无法连接到远程服务器”解决方式

    在公司Teamcity上执行自动部署.net服务的时候,发现Teamcity在启动default.aspx的时候报错了,提示:使用“0”个参数调用“GetResponse”时发生异常:“无法连接到远程 ...

  6. excel文件怎么使用php进行处理

    1.可以通过phpmyadmin导入csv文件 2.也可以直接使用php 处理已经将excel另存为.csv后缀的文件, 通过php专门处理csv文件的函数 如 fgetcsv() <?php ...

  7. DTCping 的简单使用与排错

    1. 工具下载路径 https://support.microsoft.com/zh-cn/help/918331/how-to-troubleshoot-connectivity-issues-in ...

  8. Django知识总汇

    基础 Django基础 Django基本命令 model系统 ORM基础 ORM字段和参数 ORM对数据库操作 ORM中介模型 ORM之其他骚操作 templates系统 模板语言 views系统 视 ...

  9. ySQL性能优化的21个最佳实践 和 mysql使用索引

    MySQL性能优化的21个最佳实践 和 mysql使用索引 今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我 ...

  10. 【转载】HttpWebRequest的GetResponse或GetRequestStream偶尔超时 + 总结各种超时死掉的可能和相应的解决办法

    [问题] 用C#模拟网页登陆,其中去请求几个页面,会发起对应的http的请求request,其中keepAlive设置为true,提交请求后,然后会有对应的response: resp = (Http ...