救救孩子吧!JAVA调用MySQL,select语句疯狂报错

weixin_43914075 2019-12-02 10:04:05
select *from user where username=? 用setstring(1,“12333”)传,报错 但是 delete from user where username=? 就可以 select中把?直接换成字符也可以,就是setstring传不过去,真的没辙了,求求救救孩子吧 只有20分,救救我吧
...全文
1079 54 打赏 收藏 转发到动态 举报
写回复
用AI写文章
54 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复


楼主可能不太了解pst这个预编译语句对象在执行DML和DQL上方法调用的区别,DML是需要将sql字符串放入方法中,DQL则不需要,方法上的不同,具体原因可以去看源码
IT_熊 2019-12-19
  • 打赏
  • 举报
回复
看着像是问号的问题,可以确认下是不是问号的问题.方法:把问号替换成用户名,也就是原生的sql查询下。
stacksoverflow 2019-12-19
  • 打赏
  • 举报
回复
ResultSet rs = db1.pst.executeQuery(sql); 改成 ResultSet rs = db1.pst.executeQuery();
请宠爱本宝宝 2019-12-19
  • 打赏
  • 举报
回复
引用 1 楼 Nonoas的回复:
第一行 com.mysql.jdbc.Driver 已经弃用了 改成 com.mysql.cj.jdbc.Driver
不是说弃用了,只是mysql8.0以上的版本要加.cj
Mr lym 2019-12-15
  • 打赏
  • 举报
回复
?中英文的问题吧
weixin_43462842 2019-12-11
  • 打赏
  • 举报
回复
怎么还在用这种方式写代码?
luj_1768 2019-12-11
  • 打赏
  • 举报
回复
可能有人在你使用的软件做了手脚,至少是加入了识别信号。其实,人家只是想看看你数据库里的数据,或者侵入有关的数据库系统;没想到,数据库安全性完备,于是就悲剧了。
IT_熊 2019-12-08
  • 打赏
  • 举报
回复
“select *from user where username=?
用setstring(1,“12333”)传,报错
但是 delete from user where username=?
就可以”
这里就说明问号有问题了;
再看你报错提示,也指向是问号有问题了。

select *from user where username=?
blink早都给你说了问号是中文的,改成英文半角的问号。咋就不听呢?
Ctrl精 2019-12-08
  • 打赏
  • 举报
回复
引用 1 楼 Nonoas 的回复:
第一行 com.mysql.jdbc.Driver 已经弃用了 改成 com.mysql.cj.jdbc.Driver
为什么我的MySQL是5.0.2的,也会出现这样的情况
edwintkc 2019-12-07
  • 打赏
  • 举报
回复
我也是这样,JS真的麻烦
乐之终曲 2019-12-07
  • 打赏
  • 举报
回复
* 和from连一起了
free_hard 2019-12-06
  • 打赏
  • 举报
回复
我在博客里写了这个内容,你可以看下
xiaoxiangqing 2019-12-06
  • 打赏
  • 举报
回复
select *from user where username=?--》改为select * from user where username=?
qq_42036014 2019-12-06
  • 打赏
  • 举报
回复
你的sql语句*和from之间没空格
铁匠梁 2019-12-06
  • 打赏
  • 举报
回复

String str="select *from user where username=?";
String sql3 = str;//SQL语句
db1 = new DBHelper(sql3);//创建DBHelper对象
db1.pst.setString(1, test);
ResultSet rs = db1.pst.executeQuery(sql3);//


预处理语句不能传入两次

ResultSet rs = db1.pst.executeQuery();//
javabro 2019-12-06
  • 打赏
  • 举报
回复
select *from *from之间没空格
皇夜_ 2019-12-05
  • 打赏
  • 举报
回复
这个问号好像是中文的
Cyansnow 2019-12-05
  • 打赏
  • 举报
回复
字符串加单引号
qq_39936465 2019-12-05
  • 打赏
  • 举报
回复
引用 楼主 weixin_43914075 的回复:
select *from user where username=? 用setstring(1,“12333”)传,报错 但是 delete from user where username=? 就可以 select中把?直接换成字符也可以,就是setstring传不过去,真的没辙了,求求救救孩子吧 只有20分,救救我吧
原因10楼说的对的,但是改语句错了,应该改为 rs=db1.pst.executeQuery(sql3) 改成 rs = db1.pst.executeQuery(); executeQuery多加了sql语句造成语法错误。

public void chaxun(){

        try {  
         String str="select * from user where username= ?";
            String sql3 = str;//SQL语句  
            db1 = new DBHelper(sql3);//创建DBHelper对象
            db1.pst.setString(1, "12333");
            ResultSet rs = db1.pst.executeQuery();//
         while (rs.next()) {  
                String uid = rs.getString(1);  
                String ufname = rs.getString(2);  
                String ulname = rs.getString(3);  
                System.out.println(uid + "\t" + ufname + "\t" + ulname + "\t"  );  
            }//显示数据
        } catch (SQLException e) {  
            e.printStackTrace();  
        }  
}
guishuanglin 2019-12-05
  • 打赏
  • 举报
回复
反正都是学习, 所以建议你把每个类, 每个方案最少阅读三次, 常用的研究透.
加载更多回复(33)

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧