2 u010793913 u010793913 于 2014.12.09 08:58 提问

关于servlet中sql语句的问题

String sql="select * from t_log where name=? and pw=?";
在运行到这句的时候产生以下错误

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 '? and pw=?' at line 1

换成
String sql="select * from t_log"; 可以执行
其他的sql语句
String sql = "insert into t_log(name,pw) values(?,?)"; 也能执行

求解释,是不是where的用发错了啊

9个回答

eagleyan
eagleyan   Rxr 2014.12.09 09:29
已采纳
u010793913
u010793913   2014.12.09 09:07

追加,改为String sql="select * from t_log where name=? "; 依然报错

FlyppyBugs
FlyppyBugs   2014.12.09 09:14

where没用错啊,是不是你要查询的值不符合条件呢

showbo
showbo   Ds   Rxr 2014.12.09 09:21

这种是参数化查询语句,你没给执行语句的对象添加name和pw参数吧

beier9737
beier9737   2014.12.09 09:43

String sql="select * from t_log where pw=?";
String sql="select * from t_log a where a.name=?";
这样试试

beier9737
beier9737   2014.12.09 09:56

select * from t_log where name='名字' and pw='密码’直接参数拼接起来呢

Kelley_cfy
Kelley_cfy   2014.12.09 10:16

这种SQL是属于PreparedStatement,需要这样使用:
PreparedStatement pstmt = conn.prepareStatement("select * from t_log where name=? and pw=?"); // 创建语句,里面的参数等可以用问号代替
pstmt.setString(1,"a");//给第一个问号赋值"a";
pstmt.setString(2,"b");//给第二个问号赋值"b";

pstmt.executequery();

fangmingshijie
fangmingshijie   Ds   Rxr 2014.12.11 15:15

先丢到客户端执行,看是否可以。

shenlan0322
shenlan0322   2014.12.13 18:59

肯定不是运行到这句报的错吧,你执行这个sql时报的错,你之后在提交这个SQL之前,有没有给这两个问号复制 String sql="select * from t_log where name=? and pw=?";
在运行到这句的时候产生以下错误

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!