希望能帮我解决Java的一个MySQL语句问题

问题遇到的现象和发生背景

mysql 语句 执行的时候报错了

问题相关代码,请勿粘贴截图
String sql = "insert into topic(c_id,title,content,pv,user_id,username,user_img,create_time,update_time,hot,`delete`) "
                +"values(?,?,?,?,?,?,?,?,?,?,?)";

相关代码:

img

img

img

运行结果及报错内容
java.sql.SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''delete') values(2,'test','javaweb',1,3,'tom','https://xd-video-pc-img.oss-cn-be' at line 1 Query: insert into topic (c_id,title,content,pv,user_id,username,user_img,create_time,update_time,hot,'delete') values(?,?,?,?,?,?,?,?,?,?,?) Parameters: [2, test, javaweb, 1, 3, tom, https://xd-video-pc-img.oss-cn-beijing.aliyuncs.com/xdclass_pro/default/head_img/12.jpeg, 2021-12-31T03:18:35.363, 2021-12-31T03:18:35.363, 0, 0]
我的解答思路和尝试过的方法
我想要达到的结果

能插入数据库便可

是SQL语句错误,导致的异常
1、如果列名是关键字,需要用中括号包起来,例如[delete]
2、如果列的类型是字符串的话,它的值需要加单引号,例如title的值 value 应该是 '?'
3、如果列的类型是时间的话,可以用MYSQL自带的函数now()来获取当前时间
4、如果列的类型是INT类型的话,只能填写数字,例如c_id,pv,user_id等
所以你的SQL语句应该调整为:

insert into topic(c_id,title,content,pv,user_id,username,user_img,create_time,update_time,hot,[delete])  values (0,'','',0,0,'','',now(),now(),'','')

所有的时间值都要用单引号引起来

不对不对,你java里写的是参数化执行,而在mysql客户端里是直接拼接sql语句,完全是两个不一样的套路
直接拼接如果放到网站里有可能造成sql注入漏洞
但是你参数化执行不是这样验证的
你就算把这个sql改对了能插入了,跟你java代码能不能执行没有一毛钱关系

navicat的报错是时间那里没加引号;java那里的报错是delete那里用到单引号,应该用,我看代码是写了的,但是报错是信息那里是用单引号

topicDao里面的entry方法里的params如果参数是字符串类型的,不要这样写"AA",加多对单引号,这样

"'A'"

sql就不报错了