用StringBuilder连接MYSQL字段时被清空的问题

Java字符串数组转字符串的5种方案与底层原理 字符串数组转字符串是Java基础操作,涉及String不可变性、StringBuilder可变缓冲、JVM内存分配及GC影响等核心概念。其本质是将引用型数组元素序列化为连续字符序列,关键在于分隔符控制、null安全处理与性能优化。技术价值体现在日志拼接、API参数组装、SQL生成等高频场景,直接影响RT、内存占用与线上稳定性。本文深入剖析Arrays.toString()、String.join()、StringBuilder循环、Stream.collect()及第三方库方案的适用边界与字节码级差异,覆盖 阅读详情

问题描述

读取MySQL的数据,然后使用StringBuilder进行连接,但在运行时发现每次append到一个字段的时候StringBuilder就会被清空,最后只剩后边的几个字段。
假如读出了四个字段:

字段名称值
id10150145806225128
姓名张三
消息謝謝大家支持。
时间2016-06-13 19:09:47

正确运行的话,应该最终输出:

10150145806225128;张三;謝謝大家支持。;2016-06-13 19:09:47;0

但实际的输出过程是:

10150145806225128
10150145806225128;张三
10150145806225128;张三;謝謝大家支持。
2016-06-13 19:09:47
最终:2016-06-13 19:09:47

可以看到在append完消息字段后,再append时间的时候StringBuilder被清空了。
如果append的时候跳过消息字段,也没有任何问题

10150145806225128
10150145806225128;张三
10150145806225128;张三;2016-06-13 19:09:47
最终:10150145806225128;张三;2016-06-13 19:09:47

可能的解决方案

(1)首先考虑了StringBuilder长度限制的问题,但根据以往经验应该不是,因为没有限制length参数,而且所有字段数据加起来也不长。
(2)考虑了编码的影响,发现也没什么问题,从数据库到程序都使用了utf8,在程序里加了强制转换也依然没什么用处。
(3)怀疑是字段内容的问题,该字段为消息字段,内容为中文,如果把内容直接复制出来,在程序里直接append没有任何问题,但是如果从数据库里读再append就会出现清空的现象。
感觉应该是读取数据库的时候在字段内容末尾加了什么奇怪的东西,加了个trim()试了下,竟然成功了……

10150145806225128
10150145806225128;张三
10150145806225128;张三;謝謝大家支持。
10150145806225128;张三;謝謝大家支持。;2016-06-13 19:09:47
最终:10150145806225128;张三;謝謝大家支持。;2016-06-13 19:09:47

总结

So,就这么解决了,下次读取数据库里文本的时候,记得trim()一下……

Java String、StringBuffer 简述 String、StringBuilder、StringBuffer 的区别String是静态字符串,内部维护一不可变字符数组。StringBuilder和StringBuffer是动态字符串,内部维护一可变字符数组。StringBuilder、StringBuffer 的 操作字符串的性能要远优于 String。String只适用于少量的字符串操作的情况。StringBuffer 是线程安全的,StringBuilder是线程不安全的。 阅读详情

相关推荐

USBXpress详解:从传统USB开发痛点再到手把手Demo实践

USB通信是实现设备与上位机数据交互的常见方式,但传统方案往往绕不开USB协议栈、端点管理、描述符配置等底层细节。不少开发者会优先考虑USB转串口芯片如FT232R、CP2102N,然而串口带宽和实时性受限,难以满足高速批量数据传输。USBXpress作为一套完整的USB通信解决方案,将底层协议封装成设备端固件API和主机端DLL,让开发者无需深入USB协议即可实现可靠的双向通信。它采用批量传输机制,具备高吞吐和数据校验能力,非常适合固件升级、数据采集、多设备管理等场景。本文从传统USB开发难点切入,逐步拆

weixin_34224941的博客 460

整理三种清除StringBuilder的方法

遇到一个功能需要多次重复使用StringBuilder,不想创建多个对象,就想每次用完就清除一下,但通过查API发现并没有clean方法和deleteAll相关方法,只找到一个delete方法:1、即每次二次使用时重新new一下创建新的StringBuilder对象。3、调delete方法,传start下标和end下标。2、将Length设为0。

SSHLY3的博客 3429

HQL入门与实战:面向对象的Hibernate查询语言

HQL(Hibernate Query Language)是一种面向Java实体类的ORM查询语言,其核心原理是将开发者对领域对象的操作自动翻译为适配不同数据库的原生SQL。相比传统SQL,HQL提供编译期类型安全、数据库无关性及延迟加载集成等技术价值,显著降低DAO层维护成本。它适用于以CRUD为主、强调可维护性的企业级Java应用,尤其在Spring Boot + JPA技术栈中承担着统一数据访问语义的关键角色。本文围绕HQL语法规范、命名参数绑定、JOIN FETCH优化及常见性能陷阱展开,覆盖从基础

人生的意義在於修煉!修煉之路~ 406

整理StringBuilder和String拼接SQL遇到的坑

整理StringBuilder和String拼接SQL遇到的坑

糊糊和南风的博客 595

Java基础深度解析:从内存模型到并发编程的实战指南

面向对象编程是现代软件开发的基石,其核心思想在于通过抽象、封装、继承和多态来构建复杂系统。在Java中,这一思想通过类、接口和对象机制得以实现,其底层依赖于JVM内存模型来管理对象生命周期和线程交互。理解这些原理对于编写高性能、可维护的代码至关重要,尤其是在高并发场景下,需要掌握synchronized锁升级、volatile可见性等并发控制技术。在实际开发中,集合框架如HashMap的扩容机制、ArrayList的遍历删除陷阱等高频问题,直接关系到应用性能与稳定性。本文聚焦Java核心基础,通过剖析内存管

weixin_34293246的博客 423

MyBatis批量更新性能优化:四种方案原理、选型与实战避坑指南

在数据库操作中,批量更新是提升数据处理效率的关键技术,尤其在面对大量数据同步、状态批量变更等场景时,其性能直接影响系统吞吐量。其核心原理在于减少应用与数据库之间的网络往返次数,并利用数据库自身的批处理优化机制。从技术价值看,有效的批量更新能显著降低数据库连接压力、缩短事务时间,是后端性能优化的重要环节。常见应用场景包括后台管理系统的批量审核、订单物流状态批量更新以及数据清洗校正等。本文聚焦于MyBatis框架下的批量更新实现,深入解析了foreach动态SQL、Batch执行器、ON DUPLICATE K

weixin_34221773的博客 364

StringBuilder的清空方法及其效率比较

平时会用StringBuilder做字符串的频繁拼接,有些时候,在循环中拼接完字符串后需要将StringBuilder清空,然后从循环开始再次拼接。这里介绍一下StringBuilder的清空方法,及其性能比较。 注意: 我发现网上很多关于清空方法和效率比较的问题,都是复制一篇文章。 链接:Java中StringBuilder的清空方法比较 然后得出下面的效率上 2优于3优于1。 ...

Evan's Blog ٩(๑❛ᴗ❛๑)۶ 7617

StringBuilder创建的对象如何清空

要清空一个StringBuilder对象,可以使用其实例方法setLength(int newLength)来实现。将newLength参数设置为0,就可以将StringBuilder的内容清空。通过调用setLength(0),StringBuilder的内部缓冲区将被截断,从而清空了内容。这是一种高效的方式,因为它不会创建新的StringBuilder对象,而只是修改内部缓冲区的长度。

舒一笑的博客 1688

movielens数据集导入mysql_电影数据集的处理

最近将movielens数据集rate.dat原来格式:userid,itemid,rating,timestamp按要求转换为(userid,item1,item2....),按时间的前后展示用户的所以观看电影记录。我是首先将数据导入到mysql数据库,利用数据库的容易对数据排序的特点,将其按时间字段进行排序,将排序的查询结果导出到本地文件,select userID,movieID,times...

weixin_30753213的博客 564

Unity游戏开发客户端Lua基础

Unity游戏开发客户端面经之 lua 篇

Sea3752的博客 1万+

《大明王朝1566》中,朝廷财政危机无法解决的根源分析

财政困局中的财富最终流向三重黑洞:​皇室挥霍​(如嘉靖炼丹修殿)、特权阶层贪腐​(严党年入百万两盐税)、制度性损耗​(宗室供养、低效官僚)。更深层的“钱”其实是被禁锢在道德化治理的牢笼中——当国家用“黄河长江皆可为用”的权术思维替代制度性改革时,财政危机便成为帝制王朝无法逃脱的宿命。

为了小家奋斗 1967

Unity连接MySQL数据库完整指南:从环境配置到CRUD操作实践

在游戏开发中,数据持久化是构建复杂交互系统的核心技术。关系型数据库通过其结构化存储和强大的SQL查询能力,为游戏数据管理提供了可靠解决方案,尤其适用于玩家数据、排行榜、装备系统等需要持久化与复杂查询的场景。MySQL作为最流行的开源关系型数据库,以其高性能、高可靠性和丰富的功能生态,成为众多开发者的首选。然而,Unity引擎并未内置MySQL支持,开发者常因环境配置、DLL兼容性等问题受阻。本文聚焦Unity与MySQL的集成实践,详细解析如何通过生成兼容的MySql.Data.dll、配置连接字符串、封装

aebe49167的博客 426

使用Wireshark抓取用户在网站的登陆密码

(POST请求是浏览器向服务器提交数据的方式,我们的用户名和密码就是这样提交出去的),单击点开,发现我们的账号和密码,就被抓取到了,在。(注意哦,要去掉http和/,比如http://www.4399.com/,我们只需要记下4399.com即可)(这句话是筛选数据,就是只显示IP为我们要抓取网站的数据) ,点击右边的蓝色箭头。这就是Wireshark简单的抓取登录密码的教程,只适用于http协议的网站。”打开,是这个样子,上面的数据先不用管,我们先点击左上角红色的方块停止抓包。,然后回车,得到的IP为。

泡泡的博客 1万+

代码这样写,它不香吗

JAVA开发的代码习惯前言避免过多过于频繁地创建java对象减少重复计算尽量使用已缓存的对象StringBuffer,StringBuilder获取中间数,注意防止溢出 前言 好的代码习惯可以让开发更有效率,阅读更有流畅,后续维护更方便。 本文记录的是我在JAVA开发中使用的一些小技巧,也有一些是和同事交流分享的,更有一部分是在浏览博客中有所得,下面进入正题。 避免过多过于频繁地创建java对象...

lankk1的魔法书札 250

浅谈IC测试向量(pattern)及其转换

随着集成电路的飞速发展,其规模越来越大,对电路的质量与可靠性要求进一步提高,集成电路的测试方法也变得越来越困难,为了实现芯片的快速测试和筛选,ATE设备为其提供了强有力的支撑。ATE运用芯片设计仿真文件,将其作为芯片输入激励,通过ATE测试平台提供芯片测试环境,将芯片的输出和测试结果进行比较,以此来判定芯片的好坏。 说起IC测试,不得不说一下Pattern这个词,它中文的意思是模式。在图像处理中,这个词意思为图像的纹理特征,而在IC也即芯片测试行业,这个词实际上代表了需要测试芯片的时序特征。简单的说,在测

flomingo1的专栏 1万+

【STK】手把手教你利用STK进行导弹和反导仿真04 - STK/MMT模块03 导弹飞行工具应用案例

飞行设置的工具栏就在附加窗口的中间,首先点击左边的General,修改这个项目的名字。然后在下拉的System中选择导弹的类型,这里我们选择远程。(4)输出数据文件到STK,任务窗口里选择Export Manager项,飞行数据输出到STK。项目可以命名为Test;(1)首先建立新项目,点击Flight菜单中的New Flight选项,见下图。首先看世界地图中间的红圈,是一个导弹形状的图标,这个图标表示的是导弹的发射点。选择下面的Export Manager,依次勾选红框的选项。我们拖动这个导弹的图标,

weixin_44184852的博客 1630

c# mysql executenonquery_C# 直接使用sql语句对数据库操作 (cmd.ExecuteNonQuery)

只介绍读和删不管使用什么方法来对数据库进行操作都绕不开和数据库的连接问题,所以咱们先在App.config中添加连接字段随后读取该字段,需要用到 System.Configuration.dll,所以在 References 中添加该dll。涉及到对对象列表的操作的话,添加对应的实体类也是必须的所以添加如下类示例classUserAccount{public string Account { ge...

weixin_34695463的博客 459

Java代码变更影响分析:从静态解析到动态调用图的实战全链路

本文介绍了Java代码提交影响分析的核心原理与实现方法。主要内容包括:1)静态分析技术,通过JavaParser解析AST构建调用图,记录类与方法间的调用关系;2)动态分析技术,使用ByteBuddy进行字节码增强,捕获运行时调用路径;3)JCCI工具实现,结合javalang、unidiff等技术分析代码改动影响,并将结果存储到SQLite数据库。文章提供了完整的代码示例,展示了从AST解析、动态调用跟踪到实际工具应用的完整技术栈,为代码变更影响分析提供了实用解决方案。

墨夶的博客 1251

Unity连接Access数据库实战:ODBC方案与跨平台部署指南

在软件开发中,数据库连接是数据持久化与管理的核心技术,它通过标准接口实现应用程序与数据源的通信。其原理在于利用驱动程序和连接协议,将高级语言的操作指令转换为数据库能理解的查询语言。这项技术的价值在于能够高效、安全地管理结构化数据,支撑从企业应用到单机工具等多种场景。特别是在需要与现有办公数据生态集成的项目中,访问本地轻量级数据库成为常见需求。本文聚焦于Unity引擎,探讨如何通过ODBC这一标准接口,结合System.Data.Odbc命名空间,实现与Microsoft Access数据库的稳定连接。文中详

weixin_33851604的博客 357

【车载以太网】【架构】整体架构与协议标准

车载以太网架构图 应用层:DHCP /SOMEIP/DoIP/XCP/UDPNM 传输层:TCP/IP 网络层:IPv4/IPv6/ARP/ICMP 链路层:IEEE Ethernet MAC+VLAN 物理层:Ethernet PHY: 100BASE-T1/1000BASE-T1/100BASE-Tx

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 8354

纳米尺度仿真软件:GROMACS_(3).分子动力学模拟原理

分子动力学(MD)模拟是一种强大的计算方法,通过数值积分牛顿运动方程,追踪粒子在时间上的位置和速度变化,提供关于体系动力学行为的详细信息。选择合适的力场、设置初始条件、应用边界条件、控制温度和压力、选择合适的时间步长、计算能量和力,是 MD 模拟的关键步骤。通过这些步骤,可以对各种化学、生物和材料体系进行模拟和分析,揭示其结构、动力学和热力学性质。高级应用如反应路径模拟和蛋白质折叠研究,进一步扩展了 MD 模拟的应用范围。

kkchenjj的博客 1100

Java Web毕业设计实战:校园电商系统开发全流程解析

Java Web开发是构建动态网站和Web应用的核心技术栈,其核心原理基于Servlet和JSP规范,通过处理HTTP请求与响应实现服务器端逻辑。这项技术的核心价值在于能够高效、安全地构建企业级应用,尤其在电子商务、内容管理系统等领域应用广泛。在实践层面,掌握数据库设计、MVC架构和会话管理是开发功能完整系统的关键。以校园水果鲜花商城为例,一个典型的应用场景,它涵盖了用户认证、商品管理、购物车和订单处理等核心电商模块。实现这样的系统,需要综合运用JSP进行视图渲染,Servlet作为控制器处理业务,并结合J

weixin_30847865的博客 315

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

数据库交互全链路实战:通用封装、批量优化与动态查询三大核心模块

本文提供了一套完整的数据库交互解决方案。从环境搭建到安全配置,重点介绍了通用操作类封装、批量插入优化和动态查询构建三大核心模块。通过连接池管理、预处理语句防注入、分批次提交等技巧,有效解决了性能与安全问题。特别强调事务控制规范与异常处理机制,避免后期重构风险。文章还包含分页查询实现和常见错误排查方法,为开发者提供从零搭建到性能优化的全链路指导,适用于不同规模项目的数据库层标准化建设。

小赵的博客 257

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【DataX】使用案例和原理分析

DataX是阿里巴巴开源的一个异构数据源离线同步工具,用于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。任务提交命令:用户需要根据同步数据的数据源和目的地选择相应的Reader和Writer,并将Reader和Writer的信息配置在一个json文件中,然后执行命令提交数据同步任务即可。

weixin_44823875的博客 1万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Java最高频八股文速通

final 类:String 类被声明为 final,这意味着它不能被继承,从而防止了通过继承改变其行为。final 字段:String 类中的 value 字段是 final 的,这保证了 String 对象在创建后其内部字符数组不会被改变。没有提供修改方法:String 类没有提供任何可以修改其内容的方法。所有对 String 的操作(如拼接、替换等)都会生成一个新的String 对象。

qq_43751506的博客 6395
上一篇: 使用RequestUtil解析URL查询参数
下一篇: Intellij上Junit配置
felcon
博客等级 码龄19年 33粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值