首页 > 数据库 >JDBC连接MySql教程

JDBC连接MySql教程

时间:2024-07-09 21:30:28浏览次数:17  
标签:教程 JDBC String 数据库 MySql user sql password name

一.JDBC的概念

JDBC全称Java Database Connectivity,是给Java开发的人员提供的一套进行数据库操作的工具,它提供了一种标准化的方式来连接到不同数据库的驱动程序,并且可以保证安全、跨平台和高效的数据访问。

二.JDBC连接MySql的步骤

(一)驱动准备

在连接之前必要的就是对应版本的数据库驱动程序,这个的话到官网下载一下jar包就行,官网地址

《-----MySQL驱动下载-----》下载对应版本的数据库驱动即可

是一个ZIP格式的压缩包,解压之后会得到一个文件夹,如图所示,把该文件夹放到Java项目的目录下.

(二)添加到库(这里用idea来演示)

在java项目目录下找到上面下载的驱动文件夹,右键,点击添加到库,选择下载的驱动文件,点击确认,之后选则当前模块,点击确认.

 

(三) 简单的连接示范

1.缺点:比如执行查询用户和密码是否存在与数据库中时,在sql语句这里有字符串的拼接,会有sql注入的风险.

        String url = "jdbc:mysql://localhost:3306/schema_name";  //此处为数据库的URL
        String user = "root";        //用户名
        String password = "123456";  //密码
 
        try {
            // 加载MySQL驱动程序,对于高版本的驱动来说,可以不写.
            Class.forName("com.mysql.cj.jdbc.Driver");
 
            // 建立MySQL数据库连接
            Connection connection = DriverManager.getConnection(url, user, password);
 
            // 创建Statement对象
            Statement statement = connection.createStatement();
 
            // 执行SQL查询语句
            ResultSet resultSet = statement.executeQuery(" /* 此处为sql语句   */");
 
            // 处理查询结果
            while (resultSet.next()) {
               int id = resultSet.getInt("id");   //数据处理示例
                 
                //resultSet.getXXX,  .getXXX的数据类型要和数据库中存储的数据类型一样


            }
 
            // 关闭ResultSet、Statement和Connection对象,防止资源占用

            resultSet.close();
            statement.close();
            connection.close();
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();   //捕获报错信息并打印
        }

2.改进版本

利用占位符来防止用户非法输入来篡改sql语义带来的sql注入问题。

原理是对非法字符进行转义(有兴趣可以了解一下)

        String url = "jdbc:mysql://localhost:3306/schema_name";
        String user = "root";
        String password = "123456";
        Connection con = DriverManager.getConnection(url, user, password);

        String sql = "SELECT * FROM 表_name where user_name = ? and password = ?;";  
              //使用占位符来消除字符串拼接带来的SQL注入问题。

       PreparedStatement stmt = con.prepareStatement(sql);   //改用PreparedStatement 

        String user_name = "wangsu";         //模拟用户输入的账号和密码
        String user_password = "123456";

             //处理占位符         //第一个参数为第几个占位符,第二个参数为要替换占位符的内容
        stmt.setString(1, user_name);      
 
        stmt.setString(2, user_password);   


        ResultSet rs = stmt.executeQuery();    //执行sql语句,无需再次传入sql语句

        if (rs.next()) {
            System.out.println("登录成功!");
        } else {                               //处理执行语句返回的结果
            System.out.println("登录失败!");
        }

      /*
      此处省略异常处理和关闭连接
      */

 以上就是jdbc连接mysql的简单教学.

 

标签:教程,JDBC,String,数据库,MySql,user,sql,password,name
From: https://blog.csdn.net/2301_80224944/article/details/140246172

相关文章

  • 服务器怎么连接?服务器远程连接图文教程
    服务器操作系统可以实现对计算机硬件与软件的直接控制和管理协调,任何计算机的运行离不开操作系统,服务器也一样,服务器操作系统主要分为四大流派:WindowsServer、Netware、Unix和Linux今天飞飞就给你们分享下常用的Windows、Linux、Unix三种系统的远程连接图文操作方法一、Windows......
  • 【全开源】2024最新版在线客服系统PHP源码(全新UI+终身使用+安装教程)
    PHP在线客服系统主要功能:1.用户信息用户提交:新用户可以通过表单留言输入相关信息,如用户名、密码、邮箱等,完成后获得唯一的用户ID和密码。2.客服管理客服信息管理:管理客服人员的基本信息,如姓名、工号、权限等。客服工作状态:实时显示客服人员的在线/离线状态,方便客户选择合......
  • jvm+mysql索引优化+sql优化
    一、jvm---线程栈  每个线程都会从内存栈分配一块区域,这个区域里放了此线程变量(按方法,一个方法对应一块栈帧内存区域)。Math.class字节码文件不是给人看的,idea中找到Math类,右键找到terminal,输入javap,底下-c对代码进行反汇编命令:javap-cMath.class>math.txt此时,Math类根......
  • 面试官:MySQL死锁是什么,如何解决?
    MySQL死锁概述定义:多个操作相互等待对方释放资源,导致无法继续执行的情况。场景:通常发生在多个事务同时试图锁定对方已锁定的资源时。MySQL锁的分类粒度分类:表级锁:锁定整个表,简单但并发能力低。行级锁:锁定特定行,开销大,可能死锁,但并发度高。页级锁:锁定数据库页,介于表级和......
  • MySQL 源码|LEX 结构体
    LEX结构体源码位置:(版本=MySQL8.0.37)sql/sql_lex.hsql/sql_lex.ccsql/sql_class.ccrouter/src/routing/src/sql_lexer.ccLEX对象当前有以下功能:包含了一些SQL命令的通用属性,例如:sql_command,数据变更语句语法中是否存在IGNORE,以及表列表query_tables包含了一些......
  • ML.NET-模型生成器工具(一)-图片分类教程
    1、创建一个图片分类模型2、配置训练环境  可以是CPU或者GPU3、添加训练数据  有个博主训练了一个检测奥特曼的模型,我找资料时参考了他的文章;所以这里和他保持一致,也训练一个识别奥特曼的模型验证一样。 注意事项:注意文件夹结构要求;注意每种数据的图片个数最好保持......
  • Mysql更新数据库密码
    首先登录数据库mysql-uroot-p1234qwer查找数据库用户表所有用户信息SELECT`Host`,`User`,authentication_string,password_last_changedFROMmysql.`user`;更新密码UPDATEmysql.`user`SETauthentication_string=PASSWORD('1234qwert')WHEREuser='root'AND......
  • MYSQL——mysql检索不包含字母U的数据
    2024/07/091.NOTLIKE2.ISNOT、<>、!=3.NOTIN如题,正确答案如下:SELECT*FROMyour_table_nameWHEREyour_column_nameNOTLIKE'%U%';今天写类似检索语句时,脑子突然一懵,写成了ISNOT'%UD%',如下:SELECT*FROMyour_table_nameWHEREyour_column_nameISNOT......
  • Mysql主从复制
    一、主从复制原理主从复制的相关程序:日志二进制日志中继日志(relaylog)线程主服务器:mysqldump线程(传输二进制日志给从服务器)从服务器:IO线程(接收二进制日志,写入中继日志),sql线程(读取中继日志,写入数据库,同步操作达到数据同步)点击查看代码主从复制原理:1.主节点负责......
  • mysql集群高可用架构MHA
    一、MHA概述1.为什么要用MHAMaster的单点故障问题2.什么是MHAMHA(MasterHighAvailability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。MHA的出现就是解决MySQL单点的问题。MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。MHA能在故障切换的过程......