IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> JAVA 常用方法实例 JDBC驱动连接MySQL增删改查 -> 正文阅读

[大数据]JAVA 常用方法实例 JDBC驱动连接MySQL增删改查

模板语句

DriverManager

加载驱动默认方法语句 通常不这么写,知道就可以

DriverManager.registerDriver(new com.mysql.jdbc.Driver()); 

加载驱动固定写法

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

获取数据库驱动对象

Connection connection = DriverManager.getConnection(url,username,password);

connection代表数据库
设置数据库自动提交
事物提交
事物回滚

URL

jdbc:mysql://主机IP:端口/数据库名?

String url = "jdbc:mysql://82.157.178.132:3306/mydb?userUnicode=true&characterEncoding=utf-8&useSSL=true";

Statement

执行类:执行SQL的对象

statement.executeUpdate();	//更新、插入、删除
statement.executeQuery();	//查询操作返回 ResultSet
statement.executeBatch();	//执行多个SQL
statement.execute();		//执行任何SQL语句(效率低点)

ResultSet

查询结果集,封装了所有的查询结果

resultSet.getObject();	//在不知道类型的情况下使用
resultSet.getInt();   	//获得返回值类型为整数的结果集
resultSet.getFloat(); 	//获得返回值类型为浮点数的结果集
resultSet.getString();	//获得返回值类型为字符串的结果集
resultSet.getDate();  	//获得返回值类型为日期的结果集

resultSet.beforeFirst();	//移动到最前
resultSet.afterLast();		//移动到最后
resultSet.next();			//移动到下一行
resultSet.previous();		//移动到前一行
resultSet.absolute();		//移动到指定行

开始编

配置文件db.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://82.157.178.132:3306/mydb?userUnicode=true&characterEncoding=utf-8&useSSL=true
username=weijun901
password=123456

工具类JdbcUtils.java

import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

public class JdbcUtils {
  private static String driver = null;
  private static String url = null;
  private static String username = null;
  private static String password = null;

  //读取配置文件
  static {
    try {
      InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("./MySQL/db.properties");
      Properties properties = new Properties();
      properties.load(in);

      properties.getProperty("driver");

      driver = properties.getProperty("driver");
      url = properties.getProperty("url");
      username = properties.getProperty("username");
      password = properties.getProperty("password");

      //1.驱动只用加载一次
      Class.forName(driver);

    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  //获取连接
  public static Connection getConnection() throws SQLException {
    return DriverManager.getConnection(url, username, password);
  }

  //释放资源
  public static void release(Connection conn, Statement st, ResultSet rs) {
    if (rs != null) {
      try {
        rs.close();
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
    if (st != null) {
      try {
        st.close();
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
    if (conn != null) {
      try {
        conn.close();
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
  }
}

不安全的Statement (MySQL注入)

增Insert.java

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

public class Insert {
  public static void main(String[] args) {
    Connection conn = null;
    Statement st = null;
    ResultSet rs = null;

    try {
      //获取数据库连接
      conn = JdbcUtils.getConnection();
      //获取Statement对象
      st = conn.createStatement();
      String sql = "insert into user(id,`username`,`password`)\n" + "values (7,'weijun901','123456')";
      //执行SQL语句
      int i = st.executeUpdate(sql);
      if (i > 0) {
        System.out.println("插入成功");
      }
    } catch (SQLException e) {
      e.printStackTrace();
    } finally {
      //释放资源
      JdbcUtils.release(conn, st, null);
    }

  }
}

删Delete.java

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

public class Delete {
  public static void main(String[] args) {
    Connection conn = null;
    Statement st = null;
    ResultSet rs = null;

    try {
      //获取数据库连接
      conn = JdbcUtils.getConnection();
      //获取Statement对象
      st = conn.createStatement();
      String sql = "delete from user where id = 7";
      //执行SQL语句
      int i = st.executeUpdate(sql);
      if (i > 0) {
        System.out.println("删除成功");
      }
    } catch (SQLException e) {
      e.printStackTrace();
    } finally {
      //释放资源
      JdbcUtils.release(conn, st, null);
    }

  }
}

改Update.java

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

public class Update {
  public static void main(String[] args) {
    Connection conn = null;
    Statement st = null;
    ResultSet rs = null;

    try {
      //获取数据库连接
      conn = JdbcUtils.getConnection();
      //获取Statement对象
      st = conn.createStatement();
      String sql = "update user set `userName` = 'weijun',`password`='654321' where id=7";
      //执行SQL语句
      int i = st.executeUpdate(sql);
      if (i > 0) {
        System.out.println("修改成功");
      }
    } catch (SQLException e) {
      e.printStackTrace();
    } finally {
      //释放资源
      JdbcUtils.release(conn, st, null);
    }

  }
}

查Query.java

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

public class Query {
  public static void main(String[] args) {
    Connection conn = null;
    Statement st = null;
    ResultSet rs = null;

    try {
      //获取数据库连接
      conn = JdbcUtils.getConnection();
      //获取Statement对象
      st = conn.createStatement();

      //执行SQL语句
      String sql = "select * from user where id=7";

      rs = st.executeQuery(sql);
      if (rs.next()) {
        System.out.println(rs.getString("id"));
        System.out.println(rs.getString("username"));
        System.out.println(rs.getString("password"));
      }
    } catch (SQLException e) {
      e.printStackTrace();
    } finally {
      //释放资源
      JdbcUtils.release(conn, st, rs);
    }

  }
}

登录业务Login.java

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

public class Login {
  public static void main(String[] args) {
    //正常登录
    //login("weijun","654321");
    login("'or '1=1", "'or '1=1");
  }

  //登录业务
  public static void login(String username, String password) {
    Connection conn = null;
    Statement st = null;
    ResultSet rs = null;

    try {
      //获取数据库连接
      conn = JdbcUtils.getConnection();
      //获取Statement对象
      st = conn.createStatement();

      //执行SQL语句
      String sql = "select * from user where `username`='" + username + "' AND `password` = '" + password + "'";

      rs = st.executeQuery(sql);
      if (rs.next()) {
        System.out.println(rs.getString("id"));
        System.out.println(rs.getString("username"));
        System.out.println(rs.getString("password"));
      }
    } catch (SQLException e) {
      e.printStackTrace();
    } finally {
      //释放资源
      JdbcUtils.release(conn, st, rs);
    }
  }

}

安全的PreparedStatement

数据库增加了date字段

增InsertMySQL.java

import java.util.Date;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class InsertMySQL {
  public static void main(String[] args) {
    Connection conn = null;
    PreparedStatement st = null;
    ResultSet rs = null;

    try {
      conn = JdbcUtils.getConnection();

      //区别
      //使用?占位符代替参数
      String sql = "insert into user(`id`,`username`,`password`,`date`) values(?,?,?,?)";

      st = conn.prepareStatement(sql);   //预编译SQL,先写SQL,不执行

      //手动给参数赋值
      st.setInt(1, 8);
      st.setString(2, "jinting1027");
      st.setString(3, "654321");
      //注意点:sql.date    数据库    java.sql.Date
      //      util.date   Java      new Date().getTime()  获取时间戳
      st.setDate(4, new java.sql.Date(new Date().getTime()));

      //执行
      int i = st.executeUpdate();
      if (i > 0) {
        System.out.println("插入成功");
      }
    } catch (SQLException e) {
      e.printStackTrace();
    } finally {
      JdbcUtils.release(conn, st, null);
    }

  }
}

删DeleteMySQL.java

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DeleteMySQL {
  public static void main(String[] args) {
    Connection conn = null;
    PreparedStatement st = null;
    ResultSet rs = null;

    try {
      conn = JdbcUtils.getConnection();

      //区别
      //使用?占位符代替参数
      String sql = "delete from user where id=?";

      //预编译SQL,先写SQL,不执行
      st = conn.prepareStatement(sql);

      //手动给参数赋值
      st.setInt(1, 8);

      //执行
      int i = st.executeUpdate();
      if (i > 0) {
        System.out.println("删除成功");
      }
    } catch (SQLException e) {
      e.printStackTrace();
    } finally {
      JdbcUtils.release(conn, st, null);
    }

  }
}

改UpdateMySQL.java

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class UpdateMySQL {
  public static void main(String[] args) {
    Connection conn = null;
    PreparedStatement st = null;
    ResultSet rs = null;

    try {
      conn = JdbcUtils.getConnection();

      //区别
      //使用?占位符代替参数
      String sql = "update user set `username`=? where id=?;";

      //预编译SQL,先写SQL,不执行
      st = conn.prepareStatement(sql);

      //手动给参数赋值
      st.setString(1, "jinting1027");
      st.setInt(2, 7);

      //执行
      int i = st.executeUpdate();
      if (i > 0) {
        System.out.println("更新成功");
      }
    } catch (SQLException e) {
      e.printStackTrace();
    } finally {
      JdbcUtils.release(conn, st, null);
    }

  }
}

查QueryMySQL.java

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class QueryMySQL {
  public static void main(String[] args) {
    Connection conn = null;
    PreparedStatement st = null;
    ResultSet rs = null;
    try {
      conn = JdbcUtils.getConnection();

      String sql = "select * from user where id = ?";

      st = conn.prepareStatement(sql);

      st.setInt(1, 7);//传递参数
      rs = st.executeQuery();

      //执行
      if (rs.next()) {
        System.out.println(rs.getString("id"));
        System.out.println(rs.getString("username"));
        System.out.println(rs.getString("password"));
        System.out.println(rs.getString("date"));
      }

    } catch (SQLException e) {
      e.printStackTrace();
    } finally {
      JdbcUtils.release(conn, st, rs);
    }
  }
}

登录业务LoginMySQL.java

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class LoginMySQL {
  public static void main(String[] args) {
    //正常登录
    login("weijun","654321");
    //login("'' or 1=1", "123456");
  }

  //登录业务
  public static void login(String username, String password) {
    Connection conn = null;
    PreparedStatement st = null;
    ResultSet rs = null;

    try {
      //获取数据库连接
      conn = JdbcUtils.getConnection();

      // PreparedStatement防止SQL注入的本质,是把传递进来的参数当做字符
      // 假设其中存在转义字符,会被直接转义
      String sql = "select * from user where `username`=? and `password`=?";  //Mybatis

      st = conn.prepareStatement(sql);
      st.setString(1,username);
      st.setString(2,password);

      rs = st.executeQuery();
      if (rs.next()) {
        System.out.println(rs.getInt("id"));
        System.out.println(rs.getString("username"));
        System.out.println(rs.getString("password"));
        System.out.println(rs.getDate("date"));
      }
    } catch (SQLException e) {
      e.printStackTrace();
    } finally {
      //释放资源
      JdbcUtils.release(conn, st, rs);
    }
  }
}
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-04 11:06:05  更:2022-02-04 11:06:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:39:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码