百木园-与人分享,
就是让自己快乐。

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

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 =”的大小设置的大一些。


来源:https://www.cnblogs.com/isDaHua/p/16859053.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » 学习笔记——元数据、blob类型的元素

相关推荐

  • 暂无文章