mysql中怎样插入图片

mysql插入图片的方法:首先要在数据库中建表;然后装载JDBC驱动,建立连接;最后创建Statement接口类,来执行SQL语句即可。

mysql中怎样插入图片

mysql中插入图片的方法:

1、首先,先要在数据库中建表。我在名为test的数据库下建立了一个叫pic的表。该表包括3列,idpic, caption和img。其中idpic是主键,caption是对图片的表述,img是图像文件本身。建表的SQL语句如下:

DROP TABLE IF EXISTS `test`.`pic`;CREATE TABLE `test`.`pic` ( `idpic` int(11) NOT NULL auto_increment, `caption` varchar(45) NOT NULL default '', `img` longblob NOT NULL, PRIMARY KEY (`idpic`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

将上面的语句输入到命令行中(如果安装了Query Brower, 你可以按照参考[1]中的指示来建表,那样会更加方便。),执行,表建立成功。

2、实现图像存储类

表完成后,我们就开始写个Java类,来完成向数据库中插入图片的操作。我们知道,Java与数据库连接是通过JDBC driver来实现的。我用的是MySQL网站上提供的MySQL Connector/J,如果你用的是其他类型的driver, 在下面的实现过程中可能会有些许差别。

2.1、装载JDBC驱动,建立连接

JDK中提供的DriverManager接口用来管理Java Application 和 JDBC Driver之间的连接。在使用这个接口之前, DriverManager需要知道要连接的JDBC 驱动。最简单的方法就是用Class.forName()来向DriverManager注册实现了java.sql.Driver 的接口类。对MySQL Connector/J来说,这个类的名字叫com.mysql.jdbc.Driver。

下面这个简单的示例说明了怎样来注册Connector/J Driver。

php订单系统可以整合支付宝接口 php订单系统可以整合支付宝接口

一、系统设置:用Dreamweaver等网页设计软件在代码视图下打开【dddingdan/config.php】系统设置文件,按注释说明进行系统设置。 二、系统使用:WFPHP在线订单系统是无台后的,不用数据库,也不用安装,解压源码包后,先进行系统设置,然后把整个【dddingdan】文件夹上传到服务器。在网页中要插入订单系统的位置,插入系统调用代码: 注意:id=01就表示使用样式01,如果要使

php订单系统可以整合支付宝接口 0 查看详情 php订单系统可以整合支付宝接口

import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;  public class LoadDriver {  public static void main(String[] args) {    try {      // The newInstance() call is a work around for some      // broken Java implementations      Class.forName("com.mysql.jdbc.Driver").newInstance();             // Connection con = DriverManager.getConnection(……)      // ……    } catch (Exception ex) {      // handle the error    }}

向DriverManager注册了驱动后,我们就可以通过调用 DriverManager.getConnection()方法来获得和数据库的连接。其实在上面的例子中就有这条语句,只不过被注释掉了。在后面的实现中会有完整的例子。

2.2、PreparedStatement

完成上面的步骤后,我们就可以同过建立的连接创建Statement接口类,来执行一些SQL语句了。在下面的例子,我用的是PreparedStatement,还有CallableStatement,它可以执行一些存储过程和函数,这里不多讲了。

下面的代码片断是向pic表中插入一条记录。其中(1)处Connection接口的对象con通过调用prepareStatement 方法得到预编译的SQL 语句(precompiled SQL statement);(2)处是为该insert语句的第一个问号赋值,(3)为第二个赋值,(4)为第三个,这步也是最该一提的,用的方法是setBinaryStream(),第一个参数3是指第三个问号,fis是一个二进制文件流,第三个参数是该文件流的长度。

PreparedStatement ps;…ps = con.prepareStatement("insert into PIC values (?,?,?)"); // (1)ps.setInt(1, id); //(2)ps.setString(2, file.getName()); (3)ps.setBinaryStream(3, fis, (int)file.length()); (4)ps.executeUpdate();…

2.3、完整代码

上面列出了完整的代码。

package com.forrest.storepic; import java.io.File;import java.io.FileInputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;  /** * This class describes how to store picture file into MySQL. * @author Yanjiang Qian * @version 1.0 Jan-02-2006 */public class StorePictures {     private String dbDriver;  private String dbURL;  private String dbUser;  private String dbPassword;  private Connection con;  private PreparedStatement ps;     public StorePictures() {    dbDriver = "com.mysql.jdbc.Driver";    dbURL = "jdbc:mysql://localhost:3306/test";    dbUser = "root";    dbPassword = "admin";    initDB();  }     public StorePictures(String strDriver, String strURL,      String strUser, String strPwd) {    dbDriver = strDriver;    dbURL = strURL;    dbUser = strUser;    dbPassword = strPwd;    initDB();  }    public void initDB() {    try {      // Load Driver      Class.forName(dbDriver).newInstance();      // Get connection      con = DriverManager.getConnection(dbURL,          dbUser, dbPassword);          } catch(ClassNotFoundException e) {      System.out.println(e.getMessage());    } catch(SQLException ex) {      // handle any errors      System.out.println("SQLException: " + ex.getMessage());      System.out.println("SQLState: " + ex.getSQLState());      System.out.println("VendorError: " + ex.getErrorCode());      } catch (Exception e) {      System.out.println(e.getMessage());    }  }    public boolean storeImg(String strFile) throws Exception {    boolean written = false;    if (con == null)      written = false;    else {      int id = 0;      File file = new File(strFile);      FileInputStream fis = new FileInputStream(file);             try {               ps = con.prepareStatement("SELECT MAX(idpic) FROM PIC");        ResultSet rs = ps.executeQuery();                 if(rs != null) {          while(rs.next()) {            id = rs.getInt(1)+1;          }        } else {              return written;        }                 ps = con.prepareStatement("insert "            + "into PIC values (?,?,?)");        ps.setInt(1, id);        ps.setString(2, file.getName());        ps.setBinaryStream(3, fis, (int) file.length());        ps.executeUpdate();                 written = true;      } catch (SQLException e) {        written = false;        System.out.println("SQLException: "            + e.getMessage());        System.out.println("SQLState: "            + e.getSQLState());        System.out.println("VendorError: "            + e.getErrorCode());        e.printStackTrace();      } finally {               ps.close();        fis.close();        // close db con        con.close();      }    }    return written;  }     /**   * Start point of the program   * @param args CMD line   */  public static void main(String[] args) {    if(args.length != 1) {      System.err.println("java StorePictures filename");      System.exit(1);    }    boolean flag = false;    StorePictures sp = new StorePictures();    try {      flag = sp.storeImg(args[0]);    } catch (Exception e) {      e.printStackTrace();    }    if(flag) {      System.out.println("Picture uploading is successful.");    } else {      System.out.println("Picture uploading is failed.");    }  }}

更多相关免费学习推荐:mysql教程(视频)

以上就是mysql中怎样插入图片的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1031970.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月2日 03:26:36
下一篇 2025年12月2日 03:26:57

相关推荐

  • Swiper自动轮播鼠标悬停停止报错:如何解决“swiper is not defined”问题?

    Swiper轮播图鼠标悬停暂停及继续播放功能实现及“swiper is not defined”错误解决方法 许多开发者在使用Swiper插件实现鼠标悬停暂停自动轮播功能时,可能会遇到swiper is not defined错误。本文将详细分析此问题并提供解决方案。 问题描述: 在Swiper 3…

    好文分享 2025年12月10日
    000
  • Java和PHP AES加密如何实现数据互通?

    Java和PHP AES加密实现数据互通 本文阐述如何在Java和PHP环境下,确保AES加密数据能够相互解密。Java端采用AES/CBC/PKCS5Padding模式,密钥长度为128位,并使用SHA1PRNG处理密钥。我们将重点讲解如何利用PHP的OpenSSL库,实现与Java端兼容的AES…

    2025年12月10日
    000
  • Java和PHP如何实现AES加解密互通?

    Java与PHP AES加解密互通详解 本文阐述Java和PHP如何利用AES算法实现数据加解密互通。Java端采用AES/CBC/PKCS5Padding模式,密钥长度128位,并使用SHA1PRNG处理密钥。我们将演示PHP端如何借助OpenSSL库实现与Java端兼容的加解密功能。 Java代…

    2025年12月10日
    000
  • Java和PHP AES加密解密如何实现互通?

    Java和PHP AES加密解密互通详解 本文阐述Java与PHP平台间利用AES算法实现数据加密解密互通的方案。Java端采用AES/CBC/PKCS5Padding加密模式,密钥长度128位,并使用SHA1PRNG处理密钥。我们将演示如何使用PHP的OpenSSL库实现与Java端兼容的AES加…

    2025年12月10日
    000
  • 如何安全地使用MySQL LIKE语句防止SQL注入?

    mysql like语句的安全过滤:避免sql注入风险 在使用MySQL进行数据库查询时,经常会用到LIKE语句进行模糊匹配。然而,如果直接将用户输入拼接进LIKE语句中,例如where project LIKE ‘%$project%’,则存在严重的SQL注入风险。本文将详…

    好文分享 2025年12月10日
    000
  • MySQL LIKE语句安全过滤:如何避免用户输入导致的SQL注入?

    mysql like语句安全过滤:避免sql注入风险 在使用mysql进行数据查询时,经常会用到like语句进行模糊匹配。然而,如果like语句后的参数直接来自用户输入,则存在sql注入的风险。本文将针对“作业,mysql查询问题,like语句后的参数不够安全请过滤处理?”这个问题,详细讲解如何安全…

    好文分享 2025年12月10日
    000
  • 如何用PHP向数据库中已有的JSON数组添加新记录?

    使用PHP高效管理数据库中的JSON数组数据 本文介绍如何利用PHP向数据库中已存在的JSON数组添加新记录。假设数据库中已存储以下JSON数据: [{“ratemsg”:”申请提交”,”recordtime”:”1621214777″,”postuid”:”7″}] 我们需要将其扩展为: [{“r…

    2025年12月10日
    000
  • VSCode运行PHP报错“Class ‘mysqli’ not found”:如何解决?

    VSCode下PHP程序报错:Class ‘mysqli’ not found 在使用VSCode运行PHP代码时,遇到“Class ‘mysqli’ not found”错误,表示PHP无法找到mysqli扩展。 问题原因分析 该错误通常是因为PHP…

    2025年12月10日
    000
  • Visual Studio Code中PHP的mysqli扩展找不到怎么办?

    Visual Studio Code 中使用 MySQLi 扩展报错:未找到 mysqli 函数 在 Visual Studio Code 使用 PHP 连接 MySQL 数据库时,如果遇到“未找到 mysqli 函数”的错误,通常是由于以下原因导致的: 缺少 MySQLi 扩展库: 你的 PHP …

    2025年12月10日
    000
  • ThinkPHP 5.* 数据库填充失败:php think seed:run 命令无效怎么办?

    *ThinkPHP 5.框架数据库填充命令php think seed:run失效的解决方法** 在使用ThinkPHP 5.*框架时,执行php think seed:run命令进行数据库填充可能会遇到问题。这通常是由于数据库配置错误或权限不足引起的。 排查步骤: 验证数据库配置: 打开confi…

    2025年12月10日
    000
  • MySQL数据库混用UTF-8和UTF-8mb4会带来哪些问题?

    MySQL数据库:UTF-8与UTF-8mb4混用引发的潜在风险 在MySQL数据库中同时使用UTF-8和UTF-8mb4字符集,可能会导致一系列问题,影响数据库的效率和数据完整性。 可能出现的问题: 索引失效: 当UTF-8mb4表与UTF-8表关联查询时,MySQL可能无法有效利用索引,导致查询…

    2025年12月10日
    000
  • 如何将PPT转换为HTML5格式并保留视频和动画?

    ppt转html5,保留视频和动画的解决方法 问题:如何将ppt文档转换为html5格式,并保留其内部的视频和动画效果? 答案: 使用ppt导出为html 打开ppt文档。点击“文件”菜单。选择“导出”。在“导出为”选项中选择“html”。 注意:该方法仅适用于简单的ppt文档,无法保留复杂的动画和…

    好文分享 2025年12月10日
    000
  • 使用JetBrains教育许可证开发商业项目:风险有多大?

    使用JetBrains教育许可证开发商业软件的风险与责任 利用JetBrains教育许可证进行商业项目开发存在显著风险,本文将详细分析这些风险及应对策略。 许可协议的限制 JetBrains教育许可证明确禁止将开发的软件用于商业或盈利目的。违反此协议将带来法律风险。 规模与风险的关系 小型初创企业可…

    2025年12月10日
    000
  • 使用JetBrains教育许可开发商业项目:风险有多大?

    JetBrains教育许可与商业项目开发:风险分析 部分企业利用JetBrains开发工具(例如PhpStorm、IDEA)的教育许可开发商业项目。然而,此举存在潜在法律风险,务必谨慎。 JetBrains教育许可条款明确禁止将使用该许可开发的代码用于商业盈利活动。若企业以此类代码获利,则构成违约。…

    2025年12月10日
    000
  • 教育版许可开发商业项目:风险有多大?如何规避?

    JetBrains教育版许可用于商业项目:风险评估与解决方案 部分企业利用JetBrains教育版许可开发商业项目,此举存在显著风险。本文将分析其潜在影响,并提供相应的规避策略。 教育版许可的限制与违规后果 JetBrains教育版许可明确规定禁止用于商业盈利活动。任何基于教育版许可开发的商业项目都…

    2025年12月10日
    000
  • 白天夜晚模式切换后刷新页面就失效了,如何解决?

    白天/夜晚模式切换失效的解决方法 本文将解决白天/夜晚模式切换后刷新页面失效的问题。 问题在于,模式设置没有持久化保存,刷新页面后丢失了之前的选择。以下提供一种改进方案,利用cookie存储模式设置,并在页面加载时读取cookie恢复模式。 问题描述: 一个白天/夜晚模式切换按钮,刷新页面后,选择的…

    2025年12月10日
    000
  • 使用JetBrains教育许可证开发商业项目,会面临哪些风险?

    使用JetBrains教育许可证开发商业应用的风险分析 在企业级项目中使用JetBrains教育许可证存在诸多法律风险,务必谨慎。 违反许可协议 教育许可证明确禁止将基于其开发的软件用于商业用途或营利活动。 任何商业化行为,例如软件销售或商业交易,都将构成违反许可协议。 许可证合规性审查 虽然Jet…

    2025年12月10日
    000
  • PHP数组如何高效地添加子数组?

    高效php数组操作:向数组添加子数组的多种方法 本文将探讨在PHP中高效添加子数组到现有数组的几种方法,并比较其优缺点。 下图展示了本文将讨论的几种方法的对比。 方法一:使用foreach循环 这是最直观的方法,适合处理各种类型的子数组。 立即学习“PHP免费学习笔记(深入)”; $mainArra…

    2025年12月10日
    000
  • MySQL订单主键间隔问题:如何避免自增主键带来的空隙?

    巧妙解决MySQL订单主键空隙问题 MySQL数据库中,即使未支付订单也会占用自增主键,导致主键出现空隙,影响后续订单生成效率。本文提供几种有效方案,帮助您避免这个问题。 数据完整性优先: 为保证数据完整性,不建议直接删除已生成的订单,即使订单过期。 推荐使用软删除机制,例如Laravel框架提供的…

    2025年12月10日
    000
  • MySQL订单主键出现间隔,如何有效解决?

    MySQL 订单主键跳号问题的有效解决方案 MySQL 数据库中,订单主键通常自增,但由于订单可能未支付而过期,导致主键出现跳号现象,影响数据库完整性和查询效率。 本文提供一种高效的解决方案:软删除。 什么是软删除? 软删除并非物理删除数据,而是通过添加一个标记字段(例如 deleted_at)来标…

    2025年12月10日
    000

发表回复

登录后才能评论
关注微信