首页 > 其他分享 >学习笔记——元数据、blob类型的元素

学习笔记——元数据、blob类型的元素

时间:2022-11-05 16:55:56浏览次数:101  
标签:java String 数据库 元素 笔记 blob sql input pst

2022-11-04

一、元数据

1、元数据的说明:

  元数据就是指描述数据的数据,例如:数据有多少列、数据的列名称等。

2、使用的代码:

1 ResultSetMetaData metaData = rs.getMetaData();
2 int columnCount = metaData.getColumnCount();

    说明:第1行中的rs表示结果集

二、sql的注入

说明:在sql语句中查询具有某个工号的员工的详细信息时,需要在sql语句中使用占位符。之后再使用“setObject”为里面的内容赋值。

public void test02() throws SQLException {
    Scanner input = new Scanner(System.in);
    System.out.println("请输入你要查询的员工的编号:");
    String id = input.nextLine();
    input.close();
    String url = "jdbc:mysql://localhost:3306/数据库名称?serverTimezone=UTC";
    Connection conn = DriverManager.getConnection(url, "数据库用户名", "数据库密码");

    String sql = "SELECT * FROM t_employee WHERE eid= ?";
    PreparedStatement pst = conn.prepareStatement(sql);
    pst.setObject(1,id);
    ResultSet rs = pst.executeQuery();
    ResultSetMetaData metaData = rs.getMetaData();
    int columnCount = metaData.getColumnCount();
    //遍历结果集
    while (rs.next()){
        for (int i = 1; i <= columnCount; i++) {
            System.out.print(rs.getObject(i)+"\t");
        }
        System.out.println();
    }
    rs.close();
    pst.close();
    conn.close();
}

 2022-11-05

二、blob数据类型

1、blob数据类型说明:

   blob数据类型是用来存放图片信息的。

2、使用实例:

  (1)在数据库中创建一个表,设置表中的字段有(username,password,photo),将其中的"photo"的类型设置为“blob”.在IDEA中创建java项目,设置一个模块,在该项目下添加资源。涉及到的资源有“MySQL与java向连接的接口”,为“mysql-connector-java-8.0.19.jar”。创建一个java类。

  (2)在创建的java类中,首先输入要在数据库中添加的信息。使用输入流(Scanner)。之后建立与数据库的连接,设置url。使用“驱动管理类(DriverManager)”的“getConnection”方法将路由、用户名、密码三个参数传入,使MySQL与java建立连接。

  (3)之后,设置对应的sql语句将键盘输入的数据存储到数据库中。传入的数据在sql语句中首先用占位符(?)来占位。之后将建立好的连接进行预编译(预编译的目的是降低DBMS运行的时间,即它不用编译了,直接执行sql语句即可)。之后设置占位符的参数,使用的是预编译对象的setObject函数。将传入的数据放置到数据库中,设置的是预编译对象的executeUpdate函数,它返回的是一个整数,用来表示受影响的行数。之后将流对象关闭(有预编译对象、连接对象)。

详细的代码如下:

package com.haha.problem;

import org.junit.Test;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;
public class Problem3 {
    @Test
    public void test03() throws SQLException, FileNotFoundException {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入用户名:");
        String username = input.next();

        System.out.println("请输入密码:");
        String password = input.next();

        System.out.println("请输入图片:");
        String path = input.next(); //先使用路径表示
        input.close();

        String url = "jdbc:mysql://localhost:3306/数据库名称?serverTimezone=UTC";
        Connection conn = DriverManager.getConnection(url, "数据库的用户名", "数据库密码");

        String sql = "INSERT INTO t_user VALUES (?,md5(?),?)";
        PreparedStatement pst = conn.prepareStatement(sql);
        //设置参数的内容
        pst.setObject(1,username);
        pst.setObject(2,password);
        pst.setObject(3,new FileInputStream(path));

        int len = pst.executeUpdate();
        System.out.println(len>0?"添加成功":"添加失败");
        pst.close();
        conn.close();
    }
}

    说明:上述的代码中使用了一个“test”,是一个“junit”测试工具。在sql语句添加数据中,第二个占位符使用的是“md5(?)”,这里表示将输入的数据(password)进行加密,设置为密文。

      之后在运行代码时,第三个这里输入的图片存放的路径。

    注意:如果存入的图片的大小太大的话,应该将在数据库中设置的“photo”的类型进行转换,可以设置为“mediumblob”或者是“longblob”。

      在服务器端和客户端中的blob是有大小限制的,默认的是max_allowed_packet = 4M。可以根据业务将sql中的配置文件中的“max_allowed_packet =”的大小设置的大一些。

标签:java,String,数据库,元素,笔记,blob,sql,input,pst
From: https://www.cnblogs.com/isDaHua/p/16859053.html

相关文章

  • 野花--input获取焦点,改变父元素,改变兄弟元素,不使用js来实现
    :focus-within:focus-within是一个CSS伪类,表示一个元素获得焦点,或该元素的后代元素获得焦点。换句话说,元素自身或者它的某个后代匹配:focus伪类。(shadowDOM树(en-U......
  • dbhaver找不到树元素“/General/Scripts/Script-5.sql”。
    正常情况下对应的dbhaver的安装是没有问题的。但是安装出现如下错误:baidu.com找不到树元素“/General/Scripts/Script-5.sql”。解决方案如下:​到workspace6目录下,重命名wo......
  • 《Unix/Linux系统编程》第十二章学习笔记 20201209戴骏
    第十二章、块设备I/O和缓冲区管理知识点归纳一、块设备I/O缓冲区I/O缓冲的基本原理非常简单。文件系统使用一系列I/O缓冲区作为块设备的缓存内存。当进程试图读取(dev,blk......
  • 学习笔记-Windows 基础服务搭建
    Windows基础服务搭建磁盘管理例1新建两个10G的硬盘,名称为A-10-1、A-10-2,挂载到主机;新建镜像卷,使用所有空间,驱动器号为D.1.开始——管理工具——计算机......
  • 学习笔记-组策略
    组策略组策略的概念组策略(英语:GroupPolicy)是微软WindowsNT家族操作系统的一个特性,它可以控制用户帐户和计算机帐户的工作环境。组策略提供了操作系统、应用程序和活......
  • 学习笔记-ACL
    ACL什么是ACLwindows系统中的ACL(AccessControlList),用来表示组与用户权限的列表。比如文件、注册表的权限都包括ACL,它用来表示哪些组与用户具有操作权限,其实主要......
  • 学习笔记-PDB符号文件
    PDB符号文件什么是PDB文件PDB(ProgramDataBase),意即程序的基本数据,是VS编译链接时生成的文件。DPB文件主要存储了VS调试程序时所需要的基本信息,主要包括源文件......
  • 学习笔记-IPC$(Internet Process Connection)
    IPC$(InternetProcessConnection)IPC$的概念IPC$(InternetProcessConnection)是共享"命名管道"的资源,它是为了让进程间通信而开放的命名管道,可以通过验证用户名......
  • 第十周学习笔记
    第12章  块设备I/O和缓冲区管理一、主要内容1.块设备I/O缓冲区与内存访问相比,磁盘I/O速度较慢,所以不希望在每次执行读写文件操作时都执行磁盘I/O。因此,大多数文件系......
  • 学习笔记-WinRM
    WinRM什么是WinRMWindows远程管理(WinRM)是WS-ManagementProtocol的Microsoft实现。WS-Management协议是一种基于SOAP的防火墙友好协议,旨在用于系统查找和交换......