龙华区网站建设政元软件做网站

diannao/2026/1/25 10:50:35/文章来源:
龙华区网站建设,政元软件做网站,广州网站制作后缀,陕西交通建设集团蓝商分公司网站文章目录一、JDBC下载与导入二、获取连接三、PreparedStatement类操作数据库四、操作BLOB类型字段#xff08;图片视频等#xff09;五、Batch批量插入#x1f646;#x1f3fb;‍♀️#x1f646;#x1f3fb;‍♀️文末最新版jdbc jar包下载 #x1f646;#x1f3fb… 文章目录一、JDBC下载与导入二、获取连接三、PreparedStatement类操作数据库四、操作BLOB类型字段图片视频等五、Batch批量插入‍♀️‍♀️文末最新版jdbc jar包下载 ‍♀️‍♀️一、JDBC下载与导入 1、jar包下载 划至文末有mysql-connector-java-8.0.27.jar的阿里云盘链接已经只留下有用的jar包文件了下载即可用。 2、导入IDEA ①在工程下新建一个文件夹可以命名为libs ②将下载的jar包复制粘贴到该文件夹里面然后右键该文件夹选择Add as Library 二、获取连接 1、创建配置文件jdbc.properties 配置信息如下 user用户root password数据库密码 urljdbc:mysql://localhost:3306/test?useUnicodetruecharacterutf8useSSLfalseserverTimezoneUTCrewriteBatchedStatementstrue driverClasscom.mysql.cj.jdbc.Driver说明 urljdbc:mysql://主机名称:mysql服务端口号/数据库名称?参数值参数值使用配置文件的好处实现了代码和数据的分离如果需要修改配置信息直接在配置文件中修改不需要深入代码如果修改了配置信息省去重新编译的过程。 2、使用DriverManager获取连接 import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.util.Properties;/*** Author: Yeman* Date: 2022-01-11-21:51* Description:*/ public class jdbcLinked {public static void main(String[] args) throws Exception {//1、加载配置文件InputStream is ClassLoader.getSystemClassLoader().getResourceAsStream(jdbc.properties);Properties pros new Properties();pros.load(is);//2、读取配置信息String user pros.getProperty(user);String password pros.getProperty(password);String url pros.getProperty(url);String driverClass pros.getProperty(driverClass);//3、加载驱动Class.forName(driverClass);//4、获取连接Connection conn DriverManager.getConnection(url, user, password);System.out.println(conn);} }三、PreparedStatement类操作数据库 1、PreparedStatement介绍 ①通过调用获取连接时生成的 Connection 对象的 preparedStatement(String sql) 方法获取 PreparedStatement 对象。 ②PreparedStatement 接口是 Statement 的子接口它表示一条预编译过的 SQL 语句。 ③PreparedStatement 对象所代表的 SQL 语句中的参数用问号(?)来表示调用PreparedStatement 对象的 setXxx() 方法来设置这些参数。setXxx() 方法有两个参数第一个参数是要设置的 SQL 语句中的参数的索引(从 1 开始)第二个是设置的 SQL 语句中的参数的值。 2、PreparedStatement vs Statement ①PreparedStatement 可以防止 SQL 注入问题且提高代码的可读性和可维护性。 ②PreparedStatement 能最大可能提高性能 DBServer会对预编译语句提供性能优化。因为预编译语句有可能被重复调用所以语句在被DBServer的编译器编译后的执行代码被缓存下来那么下次调用时只要是相同的预编译语句就不需要编译只要将参数直接传入编译过的语句执行代码中就会得到执行。在statement语句中即使是相同操作但因为数据内容不一样所以整个语句本身不能匹配没有缓存语句的意义事实是没有数据库会对普通语句编译后的执行代码缓存。这样每执行一次都要对传入的语句编译一次。(语法检查语义检查翻译成二进制命令缓存) ③PreparedStatement 便于操作BLOB类型字段图片视频等文件数据。 ④PreparedStatement 更适于批量操作。 3、Java与SQL对应数据类型转换表 4、使用PreparedStatement实现通用增、删、改操作 这里所说的通用是针对于同一数据库下的不同表或同一张表的不同DML。 ①工具类包括获取连接通用增删改关闭连接 package utils;import java.io.InputStream; import java.sql.*; import java.util.Properties;/*** Author: Yeman* Date: 2022-01-12-14:34* Description:操作数据库的工具类*/public class jdbcUtils {/*** Description 获取数据库连接* Param []* return java.sql.Connection**/public static Connection getSqlConnection() throws Exception{//1、加载配置文件InputStream is ClassLoader.getSystemClassLoader().getResourceAsStream(jdbc.properties);Properties pros new Properties();pros.load(is);//2、读取配置信息String user pros.getProperty(user);String password pros.getProperty(password);String url pros.getProperty(url);String driverClass pros.getProperty(driverClass);//3、加载驱动Class.forName(driverClass);//4、获取连接Connection conn DriverManager.getConnection(url, user, password);return conn;}/*** Description 关闭连接和Statement资源* Param [conn, ps]* return void**/public static void closeResource(Connection conn, Statement ps){try {if (ps ! null) ps.close();} catch (SQLException e) {e.printStackTrace();}try {if (conn ! null) conn.close();} catch (SQLException e) {e.printStackTrace();}}//重载public static void closeResource(Connection conn, Statement ps, ResultSet res){try {if (ps ! null) ps.close();} catch (SQLException e) {e.printStackTrace();}try {if (conn ! null) conn.close();} catch (SQLException e) {e.printStackTrace();}try {if (res ! null) res.close();} catch (SQLException e) {e.printStackTrace();}}/*** Description 通用增删改操作* Param [sql, args]* return void**/public static int updateDate(String sql, Object... args) {Connection conn null;PreparedStatement ps null;try {//获取数据库连接conn getSqlConnection();//预编译sql语句获取PreparedStatement实例ps conn.prepareStatement(sql);//填充占位符for (int i 0; i args.length; i) {ps.setObject(i 1, args[i]);}//执行操作return ps.executeUpdate(); //返回操作的字段数没有则为0} catch (Exception e) {e.printStackTrace();}finally {//关闭资源closeResource(conn, ps);}return 0;} }②测试类 package jdbc;import utils.jdbcUtils;/*** Author: Yeman* Date: 2022-01-12-20:51* Description:*/ public class comUpdate {public static void main(String[] args) {String sql update order set order_name ? where order_id ?;int bb jdbcUtils.updateDate(sql, BB, 4);System.out.println(bb);} }5、使用PreparedStatement实现通用查询操作 这里所说的通用是针对同一数据库下的不同表或者同一张表的不同查询字段数。而要实现不同表的通用则首先需要创建相应的不同Java类即依据ORM思想。 /** ORM编程思想object relational mapping* 一个数据表对应一个Java类* 表中的一条记录对应Java类的一个对象一个字段对应Java类的一个属性*/例如我这里的数据库中有一张customers表因此我需要创建一个customers类。 package javabean;import java.sql.Date;/*** Author: Yeman* Date: 2022-01-12-21:08* Description: customers表对应的Java类*/ public class Customers {private int id;private String name;private String email;private Date birth;public Customers() {}public Customers(int id, String name, String email, Date birth) {this.id id;this.name name;this.email email;this.birth birth;}public int getId() {return id;}public String getName() {return name;}public String getEmail() {return email;}public Date getBirth() {return birth;}Overridepublic String toString() {return Customers{ id id , name name \ , email email \ , birth birth };} }①工具类连接与关闭即调用上面的Utils ②通用查询类 import java.lang.reflect.Field; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.util.ArrayList; import java.util.List;/*** Author: Yeman* Date: 2022-01-13-20:45* Description:*/ public class Query {public static T ListT Query(ClassT clazz, String sql, Object... args) {ArrayListT ts new ArrayList();Connection conn null;PreparedStatement ps null;ResultSet res null;try {//获取连接conn jdbcUtils.getSqlConnection();//预编译sql语句获取PreparedStatement实例ps conn.prepareStatement(sql);//填充占位符for (int i 0; i args.length; i) {ps.setObject(i 1, args[i]);}//获取结果集res ps.executeQuery();//获取结果集元数据ResultSetMetaData metaData res.getMetaData();//获取列数int columnCount metaData.getColumnCount();//处理结果集数据while (res.next()){T t clazz.newInstance();for (int i 0; i columnCount; i) {Object value res.getObject(i 1); //获取列值String columnLabel metaData.getColumnLabel(i 1); //获取列的别名//通过反射实现Field field clazz.getDeclaredField(columnLabel);field.setAccessible(true);field.set(t,value);}ts.add(t);}return ts;} catch (Exception e) {e.printStackTrace();}finally {//关闭资源jdbcUtils.closeResource(conn,ps,res);}return null;} }四、操作BLOB类型字段图片视频等 1、MySQL BLOB类型 MySQL中BLOB是一个二进制大型对象是一个可以存储大量数据的容器它能容纳不同大小的数据。插入BLOB类型的数据必须使用PreparedStatement因为BLOB类型的数据无法使用字符串拼接写的。 MySQL的四种BLOB类型(除了在存储的最大信息量上不同外他们是等同的) 实际使用中根据需要存入的数据大小定义不同的BLOB类型。但需要注意的是如果存储的文件过大数据库的性能会下降。 如果在指定了相关的Blob类型以后还报错xxx too large那么需要在mysql的安装目录下打开my.ini文件最后加上 max_allowed_packet16M 。修改my.ini文件之后需要重新启动mysql服务才能生效。找不到my.ini文件或者无法修改可以留言或者私信 2、向数据表中增改大数据类型 package jdbc;import utils.jdbcUtils;import java.io.File; import java.io.FileInputStream; import java.sql.Connection; import java.sql.PreparedStatement;/*** Author: Yeman* Date: 2022-01-13-22:13* Description:*/ public class Blob01 {public static void main(String[] args) throws Exception {//获取连接Connection conn jdbcUtils.getSqlConnection();//预编译sql语句获取PreparedStatement实例String sql insert into customers(name,email,birth,photo) values(?,?,?,?);PreparedStatement ps conn.prepareStatement(sql);//填充占位符ps.setObject(1,叶绿体);ps.setObject(2,yelvti163.com);ps.setObject(3,2000-01-01);//即以流的形式读取图片文件后再添加到数据库中增和改类似FileInputStream photo new FileInputStream(new File(a.jpg));ps.setObject(4,photo);//执行ps.execute();//关闭连接jdbcUtils.closeResource(conn,ps);} }3、从数据库表中读取大数据类型 package jdbc;import javabean.Customers; import utils.jdbcUtils; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.sql.*;/*** Author: Yeman* Date: 2022-01-13-22:34* Description:这里以customer表为例该表中有一photo图片类型数据*/ public class Blob02 {public static void main(String[] args) {Connection conn null;PreparedStatement ps null;ResultSet res null;InputStream is null;FileOutputStream os null;try {conn jdbcUtils.getSqlConnection();String sql select id,name,email,birth,photo from customers where id ?;ps conn.prepareStatement(sql);ps.setObject(1,16);res ps.executeQuery();while (res.next()){int id res.getInt(id);String name res.getString(name);String email res.getString(email);Date birth res.getDate(birth);Customers customers new Customers(id, name, email, birth);System.out.println(customers);//以二进制流的形式读取下来写到本地Blob photo res.getBlob(photo);is photo.getBinaryStream();os new FileOutputStream(zhuyin.jpg);byte[] buffer new byte[1024];int len 0;while ((len is.read(buffer)) ! -1){os.write(buffer,0,len);}}} catch (Exception e) {e.printStackTrace();}finally {try {if (is ! null) is.close();} catch (IOException e) {e.printStackTrace();}try {if (os ! null) os.close();} catch (IOException e) {e.printStackTrace();}jdbcUtils.closeResource(conn,ps,res);}} }五、Batch批量插入 1、批量执行SQL语句 当需要成批插入或者更新记录时可以采用Java的批量更新机制这一机制允许多条语句一次性提交给数据库批量处理。通常比单独提交处理具有更高的效率。 JDBC 的批量处理语句包括下面三个方法 ①addBatch(String)添加需要批量处理的SQL语句或参数 ②executeBatch()执行批量处理语句 ③clearBatch()清空缓存的数据。 2、高效的批量插入 mysql服务器默认是关闭批量处理的我们需要通过一个参数让mysql开启批处理的支持。即将 ?rewriteBatchedStatementstrue 补充在配置文件jdbc.properties的 url 的参数位置。 举例向数据表goods中插入20000条数据 package jdbc;import utils.jdbcUtils;import java.sql.Connection; import java.sql.PreparedStatement;/*** Author: Yeman* Date: 2022-01-14-12:09* Description: 批量操作*/ public class goods {public static void main(String[] args) {Connection conn null;PreparedStatement ps null;try {long begin System.currentTimeMillis();//获取连接conn jdbcUtils.getSqlConnection();//设置为不可自动提交conn.setAutoCommit(false);//预编译sql语句获取PreparedStatement实例String sql insert into goods(name) value(?);ps conn.prepareStatement(sql);//填充占位符使用Batch积攒要执行的sqlfor (int i 1; i 1000000; i) {ps.setString(1, name i);//攒sqlps.addBatch();//执行这里设置为每5000条执行一次if (i % 5000 0){ps.executeBatch();//清空ps.clearBatch();}}//使其提交conn.commit();long end System.currentTimeMillis();System.out.println(花费的时间为 (end - begin));} catch (Exception e) {e.printStackTrace();}finally {//关闭连接jdbcUtils.closeResource(conn,ps);}} }‍♀️‍♀️文末最新版jdbc jar包下载 ‍♀️‍♀️ 点击最新版jdbc jar包下载阿里云盘

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/88349.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站备案号 如何添加目前网站开发应用到的技术有什么

JVM(Java虚拟机)是Java平台的核心组件之一,它是一个虚拟计算机,可以执行Java字节码文件。JVM解释并执行Java字节码,并提供了其他功能,如内存管理和垃圾回收。 JVM的基本功能包括以下几个方面: …

wordpress建立移动站能源门户网站建设

1、stack容器(栈) 1.1 栈stack基本概念 概念:stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口 栈中只有顶端的元素才可以被外界调用,因此栈不允许有遍历行…

cms网站官方网站包括哪几个网站

当你审查别人的代码时,你会寻找什么? 无论你是通过像 Upsource 这样的工具来审查代码,还是在同事讲解他们代码的过程中进行审查,在任何情况下,有些事情都比其他事情更容易评论。比如: 格式:空…

长春制作手机网站自己制作的网页别人如何访问

嵌入式人工智能----最热门的人工智能商业化技术之一 “嵌入式人工智能是当前最热门的人工智能商业化技术之一。所谓嵌入式人工智能,就是设备无须通过云端数据中心进行大规模计算,而是在本地、不联网的情况下就可以做到实时环境感知、人机交互、决策控制…

建怎样的网站挣钱快百度seo关键词优化si

目录 前言:什么是JDBC 一、准备工作(一):MySQL安装配置和基础学习 二、准备工作(二):下载数据库对应的jar包并导入 三、JDBC基本操作 (1)定义记录的类(可选) (2)连接的获…

网站开发可行性街区网站建设

《金融保险会计》模拟题 单选题 1.下列不符合外汇分账制基本要求的有(). A.对各种外币的收付凡有人民币牌价的平时都按原币填制凭证登记账簿编制报表 B.对各种外币的收付凡有人民币牌价的平时都按人民币填制凭证登记账簿编制报表 C.设置”外汇买卖”科目 D.各种外币分别设置一…

网站搭建类型海报设计网站免费

今天我们来聊一聊 C# 中的本地函数。本地函数是从 C# 7.0 开始引入,并在 C# 8.0 和 C# 9.0 中加以完善的。引入本地函数的原因我们来看一下微软 C# 语言首席设计师 Mads Torgersen 的一段话:Mads Torgersen:我们认为这个场景是有用的 —— 您…

网站模板安装出现预先建设数据库各种网站开发工具

电源、时钟、复位是主板能正常工作的三大要素。主板在电源、时钟都正常后,复位系统发出复位信号,主板各个部件在收到复位信号后,同步进入初始化状态。如图7-11所示为复位电路的工作原理图,各个十板实现复位的电路不尽相同&#xf…

怎么制作网站上传wordpress 随机显示

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 1. 法一:指针法 解题思路 我们以每一个窗口来看,找…

免费商城网站模板企业网站建设及维护费用

博物馆是人们了解历史文化、传承文明的重要场所。而博物馆的藏品管理是博物馆的核心工作之一,对于展现博物馆的魅力、吸引观众的眼球有着至关重要的影响。并且博物馆藏品管理是一项复杂且专业的工作,它涉及到多个方面,包括但不限于藏品的收集…

哪个网站可以做兼职讲师wordpress 更改页面排版

因为您在调用 请求接口的函数如getLocaltion() 方法时没有订阅返回的 Observable,或者在订阅 Observable 时没有正确处理其响应。即要subscribe接口,并正确处理。因为Observables 是惰性执行的。这意味着如果您创建了一个 Observable 对象,但…

网站素材免费下载公司宣传册设计与制作图片

目录 二分图概念 二分图应用场景 如何判定一个图是否可以划分成二分图 证明 染色法 原理步骤 时间复杂度 算法思路 例子 匈牙利算法 概念 匈牙利使用算法前提,场景 时间复杂度 算法思路 例子 二分图概念 二分图是图论中的一个重要概念,指的是一个图的…

合肥做网站推广的公司国字型网站建设布局

对win8开发,上一节我们对win8进行了简单的介绍,这一节我们来瞧一瞧他的开发环境搭建。 前奏。 这里所讲的win8开发,主要是指Windows8 app store 上开发,及metro ui或叫morden ui 程序的开发。传统桌面应用程序,网站应…

网站建设最贵服务商如何在建设教育协会网站注册考试

quickrun 是一款rk3588 rknn多模型高效高并发部署软件 软件框架 采用session思想,可以定义多个session满足不同模型的义务需求。比如充电桩检测,垃圾分类,悬崖检测,模型共用一个摄像头,采用yolov5的模型。 采用消息…

一个域名多个网站门店推广是什么意思

console.log("嵌套函数中调用fn this值被赋给self" self o);这个输出会是 false。 在 JavaScript 中,比较两个对象是否相等时,实际上比较的是它们在内存中的引用地址,而不是它们的属性值。即使两个对象有相同的属性值&#xff…

宁波做网站优化哪家好网站收录怎么做

一、堆树的定义 堆树的定义如下: (1)堆树是一颗完全二叉树; (2)堆树中某个节点的值总是不大于或不小于其孩子节点的值; (3)堆树中每个节点的子树都是堆树。 当父节点的键…

网站切换中英文贵州最新消息今天

全世界只有3.14 % 的人关注了数据与算法之美近日,一份滴滴出行内部流传出来的财务数据显示,该公司2018年持续巨额亏损,全年亏损高达109亿元人民币。若消息属实,那将说明,自2012年滴滴成立以来就一直处于亏损状态&#…

营销网站怎样做有什么做任务拿钱的网站

首先要声明一点,zk集群中,leader服务器有着比较重要的存在,Follower 服务器只是处理非事务性请求,leader服务器主要负责事务性请求,Follower 服务器在遇到事务性请求以后还是会转发给leader服务器处理,所以…

富阳网站公司怎么注册一个域名

不管是component还是分文件编写的一个自定义组件,遵循如下: a:不管哪一级的子对象 都可以直接调根节点下的方法和属性 b:不管哪一级的子对象 调用非根节点的方法和属性,前面要加上该节点的id,即id.方法()或id.属性的形式 import QtQuick 2.…

齐鲁建设网站涂鸦智能深圳分公司

TCPDump是一个用于抓取网络数据包的命令行工具。它可以帮助网络管理员和开发人员分析网络流量、故障排除以及安全问题。下面是一些TCPDump的详细用法: 基本用法: 监听指定网络接口:tcpdump -i eth0通过IP地址过滤:tcpdump host 19…