连接MySQL数据库_mysql中连接数据库_麻油叶777的博客-程序员秘密

技术标签: java  mysql  

查询MySQL数据库的内容

1、首先在MySQL里面建立一个库和表,插入数据。

在这里插入图片描述建库!
在这里插入图片描述
接着下一步 建表语句
在这里插入图片描述如图所示,数据也插入里面了。
2、打开idea,新建一个Javaproject,
将jar包导入src中 点击图中选项
在这里插入图片描述

在src里面建立一个tool工具包,然后在里面建立一个util 工具类:

在package cn.hp;

import cn.hp.model.Student;

import java.sql.*;
import java.util.ArrayList;

public class Test01 {

    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        // jdbc操作
//        test1(1,"1' or '1'='1");
        test2();
    }

    public static void test1(int id , String sname) throws ClassNotFoundException, SQLException {
//      1、加载驱动  选择当前使用的数据库   选择了mysql
            Class.forName("com.mysql.jdbc.Driver");
//      2、创建一个连接    设计模式的理念  1、提升了安全性   2、运行时的性能    3、代码的优美   4、代码的可拓展(方便升级改造)
//        一个方法 5000行代码
        Connection connectionName = DriverManager.getConnection("jdbc:mysql://localhost:3306/student?characterEncoding=utf8&useSSL=true","root","root");
//      3、新建一个 查询页面 用来编写sql的    sql语句编辑器
//
        Statement statement = connectionName.createStatement();
//      4、编写sql语句
//      二进制数据   21:  101010  >> 1  --> 42
        String sql = "select * from student where id = " +id +" and sname = '"+sname+"' ";
//      5、执行sql,使用statement  获取 ResultSet 结果集 ( 表类型 行 列 )
//          查询的结果集 : 4种 单行单列  --> 基本数据类型接收
//                            单行多列  --> 使用对象进行接收
//                            多行单列  --> 使用集合(基本数据类型)进行接收
//                            多行多列  -->  使用集合(对象)进行接收

        ResultSet resultSet = statement.executeQuery(sql);
//        存在一个游标 ,这个表示当前正在读取第几行的数据  默认在 字段上 不在记录上,
//          想让游标到记录上,需要使用next()将游标下移
//        System.out.println(resultSet.isBeforeFirst() +" " + resultSet.getRow());
//        代表第0行的数据  字段名称 列的数量
//        ResultSetMetaData metaData = resultSet.getMetaData();
//        for (int i = 1 ; i <= metaData.getColumnCount() ; i ++){
//            System.out.print(metaData.getColumnName(i));
//            System.out.println(metaData.getColumnLabel(i));
//        }

        ArrayList list = new ArrayList();
        while (resultSet.next()){
//            保存数据库中的多行多列 数据
//            每走一次循环,创建一个对象, 使用对象 保存当前行的数据
            Student student = new Student(
//              从数结果集的表中 使用int类型的 表示获取当前行的第1列  使用string类型的参数 表示获取当前字段的列
            resultSet.getInt(1),
            resultSet.getString(2),
            resultSet.getString(3),
            resultSet.getString("ssex")
            );
            list.add(student);
//            System.out.println( "当前下标位置" + resultSet.getRow()
//                    +"   当前是否第一行" +resultSet.isFirst() + "   "
//                    + resultSet.isLast() + "   " +resultSet.isAfterLast());
        }
        System.out.println(list);
//        resultSet.previous();
//        System.out.println(resultSet.isAfterLast() + "  "+ resultSet.getRow());
//        int i = resultSet.getInt(1);
//        System.out.println(i);
//        使用Java中的容器( 基本数据类型、数组(长度固定)、集合(长度可变)、对象 ) 保存 数据库查询的数据

        // 关闭资源数据   关闭的是对象, 只关注自己创建的对象 ;
        resultSet.close();
        statement.close();
        connectionName.close();
    }

//    预编译 编译器
    public static void test2() throws ClassNotFoundException, SQLException {
//        1、加载驱动  选择当前使用的数据库   选择了mysql
        Class.forName("com.mysql.jdbc.Driver");
//      2、创建一个连接    设计模式的理念  1、提升了安全性   2、运行时的性能    3、代码的优美   4、代码的可拓展(方便升级改造)
//        一个方法 5000行代码
        Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/student?useSSL=false&characterEncoding=utf8","root","root");
//      3、新建一个 查询页面 用来编写sql的    sql语句预编辑器 PreparedStatement
//        先将sql与使用正确的方式 拼接完成  速度和 statement 比 会慢很多 但是 安全性能高 能够防止sql注入
//        把sql语句中的条件 使用 ? 代替
//        把条件内容 当成 参数 交给 预编译器 让他自己拼接
        String sql = "select * from student where id = ? and sname = ?";
        Object [] strs = {1,"赵雷"};
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        preparedStatement.setObject(1,strs[0]);
        preparedStatement.setObject(2,strs[1]);
//        直接调用方法 表示 执行已经拼接好的sql语句
        ResultSet resultSet = preparedStatement.executeQuery();
        ArrayList list = new ArrayList();
        while (resultSet.next()){
//            保存数据库中的多行多列 数据
//            每走一次循环,创建一个对象, 使用对象 保存当前行的数据
            Student student = new Student(
//              从数结果集的表中 使用int类型的 表示获取当前行的第1列  使用string类型的参数 表示获取当前字段的列
                    resultSet.getInt(1),
                    resultSet.getString(2),
                    resultSet.getString(3),
                    resultSet.getString("ssex")
            );
            list.add(student);
//            System.out.println( "当前下标位置" + resultSet.getRow()
//                    +"   当前是否第一行" +resultSet.isFirst() + "   "
//                    + resultSet.isLast() + "   " +resultSet.isAfterLast());
        }
        System.out.println(list);
//        resultSet.previous();
//        System.out.println(resultSet.isAfterLast() + "  "+ resultSet.getRow());
//        int i = resultSet.getInt(1);
//        System.out.println(i);
//        使用Java中的容器( 基本数据类型、数组(长度固定)、集合(长度可变)、对象 ) 保存 数据库查询的数据

        // 关闭资源数据   关闭的是对象, 只关注自己创建的对象 ;
        resultSet.close();
        preparedStatement.close();
        connection.close();
    }
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yz2419774634/article/details/112542760

智能推荐

python drawcontours_python下使用cv2.drawContours填充轮廓颜色_斌卡的博客-程序员秘密

在使用cv2.drawContours进行轮廓的颜色填充时要注意一点:(1)颜色填充时:给其传参数的时候,需要搞一个轮廓的list给他,要不会导致颜色填充失败。(2)画轮廓线时:就没必要搞list了,直接contours[i]就可以。python代码:import cv2imgfile = "IMG_3200.png"img = cv2.imread(imgfile)h, w, _ = img.s...

别人总结的英语网站大全_yangfuchao418的博客-程序员秘密

纽约时报,网上看新闻的好地方 http://www.nytimes.com 英文MP3下载的好地方 http://www.mp3raid.com/archive/archive/m/2 英文剧本下载的好地方 http://huajun.com/juben.htm 一个个人主页,从这里可以在线收听新东方的25盘磁带 http://www.intron.ac/study/t...

威纶和s7200通讯线_威纶触摸屏与s7-200通信实例_weixin_39657444的博客-程序员秘密

(2)PLC通讯参数设置:在系统块下,通讯端口设置,如设置端口0:PLC地址2,波特率。(3)EB8000软件,PLC设备属性通讯参数设置:通讯参数如波特率等必须与第(2)步的通讯端口设置一致,如PLC地址2,波特率。可依据PLC的通讯参数作修改,如PLC地址改为2,波特率改为;PLC和HMI的程序通讯参数都必须做对应修改。建议:与S7-200通讯时,建议将通讯延时、ACK讯号延时分别设置为默...

QT常用库、类、函数等_qt库_rainbow_lucky0106的博客-程序员秘密

文章目录常用基类QObject类内存管理机制:父子对象的内存管理机制QApplication类:应用程序类(一般不直接操纵)QWidget类:窗体类Qt常用库QtCore基本库QtGui GUI库:包含图形窗口类网络和数据库相关类QtNetwork: Qt网络库QtSql:Qt数据库类Qfont类: 字体QPixmap类:绘图QPixmap VS QImage常见问题QPalette类:调色板ColorGroupColorRoleQBrush画刷常用设置颜色方法QColor类常用函数输出类型转换常用基类

利用Vulnhub复现漏洞 - AppWeb认证绕过漏洞(CVE-2018-8715)_vulhubcve-2018-8715_建瓯最坏的博客-程序员秘密

AppWeb认证绕过漏洞(CVE-2018-8715)Vulnhub官方复现教程漏洞原理漏洞环境启动环境浏览器BurpSuite漏洞复现【注意】Burp不知名原因,会消失最后一个字节利用sessionVulnhub官方复现教程https://vulhub.org/#/environments/appweb/CVE-2018-8715/漏洞原理AppWeb是Embedthis Softwar...

PostgreSQL on ECS SLA 流复制备库+秒级快照+PITR+自动清理_weixin_34085658的博客-程序员秘密

标签PostgreSQL , ECS , 阿里云 , 部署 , 物理镜像 , 流复制 , 快照备份 , 备份验证 , 自动清理背景介绍在阿里云ECS环境中,实现一个非常简单,但是可用性和可靠性满足一般企业要求的PostgreSQL环境。包括:1、自动启动数据库2、包括一个物理流复制备库3、包括自动的秒级快照备份4、包括自动备份集有效性...

随便推点

Spring boot基于Redis缓存商城分类,商品信息_LD SEOer的博客-程序员秘密

版权声明:本文为博主原创文章,转载请标明出处 https://blog.csdn.net/qq_19260029/article/details/78230599 初始化分类以及商品信息@Componentpublic class InitGoodsRed...

996页阿里Android面试真题解析火爆全网,全网首发!_普通网友的博客-程序员秘密

在安卓系统中: 当系统内存不足时,Android系统将根据进程的优先级选择杀死一 些不太重要的进程,优先级低的先杀死。进程优先级从高到低如下。前台进程处于正在与用户交互的activity与前台activity绑定的service调用了startForeground()方法的service正在执行oncreate(),onstart(),ondestroy方法的 service。进程中包含正在执行onReceive()方法的BroadcastReceiver。系统中的前台进程并不会很多,而且

java实例化类之后如何赋值_深入理解Java对象的创建过程:类的初始化与实例化..._智芯融的博客-程序员秘密

摘要:在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的。在实例化一个对象时,JVM首先会检查相关类型是否已经加载并初始化,如果没有,则JVM立即进行加载并调用类构造器完成类的初始化。在类初始化过程中或初始化完毕后,根据具体情况才会去对类进行实例化。本文试图对JVM执行类初始化和实例化的过程做一个详细深入地介绍,以便从Java虚拟机的角度清晰解剖一个Java对象...

ImgUtil.java根据长宽压缩图片 根据坐标长宽切图 生成缩率图_weixin_30535167的博客-程序员秘密

ImgUtil.java根据长宽压缩图片 根据坐标长宽切图 生成缩率图package com.beisun.mbp.util;import java.awt.Color;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Image;import java.awt.Rectangle;...

一名后端程序媛的“打杂”经验_在公司一直打杂,后端_greensure的博客-程序员秘密

周末看书走神的思考,在这里简单说一说我的“打杂”经验,后面有时间再写写我是如何在“打杂”中偷懒,如何“高效打杂”节省时间学些新技术,如何在“打杂”中争取参与自己感兴趣的项目。作为一名后端“打杂”程序员(CRUD GUY)这些年从业的打杂经验:1.发觉写需求的人没有想清楚的地方(没发觉的话,后面背锅的背锅,扯嘴皮的扯嘴皮);2.有时候被迫画原型图给客户参考;3.站在测试角度写代码,有时候还得做部分功能的并发测试、压力测试(测试人员写并发测试报告、压力测试报告);4.接到需求后,做需求评估、分解需.

推荐文章

热门文章

相关标签