java中的sql语句为何会报错,而到了workbench就可以执行

rt
基本上是timestamp的格式,比如
insert into table values ('2015-03-17 00:00:00');
这句话在java通过jdbc执行就会报错,而直接在workbench下面操作就没有问题
为什么会这样?

6个回答

可能是字符串单引号等引起的,打印代码中的字符串跟workbench中比较

miss_snow_m
lscHacker 对的,我知道单引号的问题。这里出问题的field是timestamp类型的,所以我想是不是和这个有关系。
接近 5 年之前 回复

insert into table(字段1,字段2....) value( 值1,值2, , ,) ; 或者不写字段,把所有字段的值都插入,例如有三个字段,insert into table value(?, ?,?)

miss_snow_m
lscHacker 额……这些基础的我还是知道的……
接近 5 年之前 回复

首先你要把你JDBC执行的那条sql打印出来,看看能不能在db里面运行,如果可以,那么就应该没什么问题,如果不行,数据库的workbench一般都会有提示你是哪个地方有问题

还要问一句,就是你上面是mysql还是oracle,还有你的字段够不够长,有可能JDBC那里转了类型,然后输入到数据库里面不够长度,最好还是把错误信息详细弄出来

miss_snow_m
lscHacker 用的是mysql,workbench那里执行没有问题,java跑起来显示是row 1 doesn't match
接近 5 年之前 回复

数据可以表的相应字段的数据类型,还有你在插入的时候字符串是不应该要转成sql的date类型呢?

还有一种方式,你换成那种占位的方式然后在设置值试一试!查处问题所在!

miss_snow_m
lscHacker 你是说PreparedStatement那种吗?我一会儿试试。我也知道大概是timestamp的问题,就是很奇怪,toString的结果都一样,但是就是要转换成Date类,很奇怪这点。。。
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问