在使用jdbc的过程中遇到了Truncated incorrect DOUBLE value这么个问题,部分代码如下:


//employeeNum是数字字符串,arrangeDate是格式为yyyy-MM-DD的日期字符串
String sql="UPDATE arrange SET askForLeave='是' WHERE employeeNum='"+employeeNum+"' and arrangeDate='"+leaveDate+"'";
//String sql="UPDATE arrange SET askForLeave='是' WHERE employeeNum="+employeeNum+" and arrangeDate="+leaveDate;问题就在这句啦
int flag=0; conn=UserDAO.getConnection();
psmt=conn.prepareStatement(sql);
/*psmt.setString(1, employeeNum);
psmt.setString(2, leaveDate);*/


网上搜索到的对“Truncated incorrect DOUBLE value”的解决方法主要是这两种:
①修改了多个列的值而各列之间用逗号连接而不要用and
    错误写法示例:update tablename set col1=value1 and col2=value2 where col3=value3;
    正确写法示例:update tablename set col1=value1 ,col2=value2 where col3=value3;
②SQL语句在拼接字符串时使用函数CONCAT()而不要用“+”
但我只修改一列而且是直接传参的啊= =。一开始我尝试通过preparedstatement设置动态参数,即
String sql="UPDATE arrange SET askForLeave='是' WHERE employeeNum=? and arrangeDate=?";
这次不报 Truncated incorrect DOUBLE value了,改报语法错误了= =
于是把and替换成or,结果正确;把参数改成同格式的常量,结果也正确;去掉一个条件,结果还是正确;说明错误出在两个参数上,但到底是为什么呢OTZ
不死心继续搜索,然后在https://stackoverflow.com/questions/3456258/mysql-truncated-incorrect-double-value这里看到
嗯???哦……看来MySQL是把and前后的两个字符串当double来进行and运算了
最后我的解决方法是把
String sql="UPDATE arrange SET askForLeave='是' WHERE employeeNum=“+employeeNum+” and arrangeDate="+leaveDate;
改成了
String sql="UPDATE arrange SET askForLeave='是' WHERE employeeNum= '"+employeeNum+" ' and arrangeDate= '"+leaveDate+" '"

在字符串变量前后又加了单引号

MySQL提示Truncated incorrect DOUBLE value解决方法相关推荐

  1. MySQL 提示 truncated incorrect Double value解决办法

    原因:字段类型不匹配产生的 总结:出现这种报错一般就是字段类型不匹配,而且mysql也给出了具体是哪个值不匹配,直接找到这个错误的值,基本就可以解决问题了. 首先看下表结构:注意,我这里的age是va ...

  2. IDEA、MySQL提示Truncated incorrect DOUBLE value报错解决方法

    IDEA.MySQL提示Truncated incorrect DOUBLE value报错解决方法 目录 IDEA.MySQL提示Truncated incorrect DOUBLE value报错 ...

  3. mysql Truncated incorrect DOUBLE value解决办法

    出现该错误"Truncated incorrect DOUBLE value"时,极有可能是你写的mysql查询语句中所提供的字段,与表中字段类型不匹配.比如字段为字符型的,与数字 ...

  4. mysql 提示表不存在的解决方法error 1146 Table doesn't exist

    直接拷贝数据库导致提示表不存在的解决方法 电脑重装系统后把原来的mysql data复制进去后大部分表是可以访问的,但是有几个表提示表不存在: error: 1146: Table 'your_tab ...

  5. mysql修改Truncated incorrect DOUBLE value:

    UPDATE shop_category SET name = 'Secolul XVI - XVIII' AND name_eng = '16th to 18th centuries' WHERE ...

  6. Mysql错误1366 - Incorrect integer value解决方法

    mysql报错 第一种解决方案 查看数据表后发现product_coupon这个字段要求是整数,而默认是null,需要把它的默认值改为0,并将数据库里原有的product_coupon 等于null的 ...

  7. 1366 mysql_Mysql错误1366 - Incorrect integer value解决方法

    由于这个数据库服务器存放的数据库比较多且都是小数据库,所以最初的时候是运行在windows服务器上的.前一段时间由于机房服务器要做调整,于是我便在一个夜深人静的夜晚对数据库进行的迁移及前台应用程序进行 ...

  8. Truncated incorrect DOUBLE value: 'xxx'的解决方法

    线上执行sql时发现一条普通的update sql语句执行报错Truncated incorrect DOUBLE value: 'xxx' 仔细检查了一下sql语法并没有问题,怀疑是字段类型的问题 ...

  9. 【转】Data truncation: Truncated incorrect DOUBLE value:Mysql Update时

    转自http://blog.csdn.net/iwtbavcp/article/details/6455704 真的是一篇很冷的帖子,解决了我的大问题   Mysql Update  sData tr ...

最新文章

  1. PE文件和COFF文件格式分析——RVA和RA相互计算
  2. iOS 开发之时间选择器
  3. PHPRPC for PHP
  4. boost::gil模块数字扩展中的 resize_view() 示例
  5. visio studio json工具_《产品经理入门指南》彩蛋2:别技淫原型图!你的Visio和Balsamiq Mockup入门了吗?...
  6. 获取指定日期所属年份的第一天日期或最后一天日期
  7. 学生管理系统c#语言代码,基于C#语言的学生管理系统的设计(ASP.NET2.0)
  8. C++学习笔记系列一
  9. mysql多表查询取出最后的数据_数据库多表查询,如何取A表中最后一个数据在B表中进行查找?...
  10. C++ 迭代器 删除(erase)插入(insert)之后失效
  11. android无线投屏到电视盒子,【沙发管家】如何把电脑视频投屏到智能电视/ 电视盒子上?...
  12. 小白学VUE——实现抖音时钟(CDN方式)
  13. pycharm下django实战
  14. [虾神GIS制图课堂]四色地图配色法
  15. Java金额转换_阿拉伯数字转换成中国大写数字
  16. android 手机 拍 全景 java_android如何进行全景拍照怎么实现
  17. html 中各种鼠标手势
  18. hdd硬盘与sas硬盘_什么是硬盘驱动器(HDD)?
  19. 无法打开键,请验证您对该键拥有足够的访问权限
  20. Maya粒子-水滴表面流动效果

热门文章

  1. 宝塔面板安装修改安装路径
  2. java微信接收消息_使用Java开发微信公众平台(二)——消息的接收与响应
  3. ERROR:frozen importlib._bootstrap, line 1519, in _find_and_load_unlocked
  4. [AcWing算法提高课]之图论 单源最短路的综合应用(C++题解)
  5. android动画---ObjectAnimator基本使用
  6. 【十二】【vlc-anroid】视频图像display展示层模块源码分析-OpenGL ES2交互渲染
  7. 数据库系统——大作业
  8. Android系统的改进(四)-- 短信直接加入黑名单功能
  9. Python模块学习 - jinja2
  10. 技术解析:为什么 B 站的弹幕可以不挡人物?