sql语句格式错误 时间:751次浏览2017.06.29提问 已解决问题hao231知道平台可亲可爱的中北网友在751次浏览2017.06.29提问提了关于数据库电脑使用技巧编程相关的问题,他的提问都说sql语句格式错误数据库电脑使用技巧编程希望大家能够帮助她。 详细问题描述及疑问:期待您的答案,谢了,下次有事儿别忘了找我 ! 第1个回答 简单生活2017.06.29回答keshiname没有获取到值吧 第2个回答 南京新华电脑学院2017.06.29回答你的问题在于,你没有搞清楚Statement和PreparedStatement这两个对象的区别。Statement对象执行sql时,它是原封不动的将所有sql拼接后的字符串。发送给数据库服务器。有sql注入危险。因为所有字符串都当做sql语句来执行。而PreparedStatement可以先对sql进行预编译操作,编译过程确定参数类型,个数,位置信息。后面再赋值。由于已经编译过一次,所以传入的参数哪怕再含有sql关键字时,它也只是被当做数据部分传给字段赋值。而不是当做sql本身的一部分去执行。执行不了,顶多就报错。不会有sql注入攻击的危险。所以当你的sql带有问号时,表明你需要进行预编译操作。那么你只能使用后者。而不能使用前者。因为Statement对象没有这个功能。这就是你的问题错在。 第3个回答 Hairger2017.06.29回答楼主。你的问题在于,你没有搞清楚Statement和PreparedStatement这两个对象的区别。Statement对象执行sql时,它是原封不动的将所有sql拼接后的字符串。发送给数据库服务器。有sql注入危险。因为所有字符串都当做sql语句来执行。而PreparedStatement可以先对sql进行预编译操作,编译过程确定参数类型,个数,位置信息。后面再赋值。由于已经编译过一次,所以传入的参数哪怕再含有sql关键字时,它也只是被当做数据部分传给字段赋值。而不是当做sql本身的一部分去执行。执行不了,顶多就报错。不会有sql注入攻击的危险。所以当你的sql带有问号时,表明你需要进行预编译操作。那么你只能使用后者。而不能使用前者。因为Statement对象没有这个功能。这就是你的问题错在。 第4个回答 2017.06.29回答“time=”是什么鬼?sql语言中通配符是“%”,“”只代表一个字符过滤所有非空数据的话应该是:“where`time`isnotnulland`keshiname`isnotnull”