jsp数据库连接查询问题
我在jsp页面中执行这条语句,rsa=acc.executeQuery("SELECT * FROM stu_info WHERE 学号="+id+" order by '"+orderby+"' desc");结果是java.sql.SQLException: [MySQL][ODBC 5.2(w) Driver][mysqld-5.6.14-log]Unknown column '学号' in 'where clause'
而在数据库中执行这条语句把SELECT * FROM stu_info WHERE 学号=1 order by '学号' desc却是正确的。
当我把原来的语句改为rsa=acc.executeQuery("SELECT * FROM stu_info WHERE '学号'="+id+" order by '"+orderby+"' desc");时,编译正确,但是只能得到表中的列名,原来在数据库中可以查询到的信息现在都查询不到。
并且当我在数据库中把查询语句改为SELECT * FROM stu_info WHERE '学号'=1 order by '学号' desc时也查询不到。
求高人帮忙解答一下问题 jsp 数据库查询 --------------------编程问答-------------------- 用汉字做列名? --------------------编程问答-------------------- 把你的中文列名改下吧。 --------------------编程问答-------------------- 楼主数据库的字段确定有学号?不是studentNo?列错了吧。还是你起的别名? --------------------编程问答-------------------- rsa=acc.executeQuery("SELECT * FROM stu_info WHERE 学号="+id+" order by '"+orderby+"' desc");
改为:
rsa=acc.executeQuery("SELECT * FROM stu_info WHERE 学号='"+id+"' order by '"+orderby+"' desc");
试试 --------------------编程问答-------------------- 用中文作列名???太不合理了。你可以用别名啊,把表改下吧。还有学号是什么类型的字段? --------------------编程问答-------------------- '学号'改成`学号`或者"学号"试试看。 --------------------编程问答-------------------- 问题错误是:where条件后有不能识别列“学号”
问题应该就出在汉字的问题吧,在一个,仔细检查下你的字符串拼接,明显存在问题 --------------------编程问答-------------------- 把'学号'改成"学号",给id加''这一类的都试过了,主要这是个课程小作业,所以用中易做图列名,以便在读列名的时候直接打印出来。表里是确实存在学号这个列的,是在没办法的话我就改列名吧,谢谢各位解答了。 --------------------编程问答-------------------- 4楼正解
--------------------编程问答-------------------- SQL拼接为什么不用stringbuffer呢?或者用proparedStatment多安全 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 把你的 这段sql语句在 数据库的环境下执行试试。。。 看哪里报错。。? --------------------编程问答-------------------- 都是中文惹的祸 --------------------编程问答-------------------- 引号问题:给个例子你玩玩
String condition=" SELECT * FROM message Where number = ' " + number + " ' "
最后一个引号和第一个引号对应,则String condition = "" ;
再看sql语句 :SELECT * FROM message Where number = ' " + number + " ' 中number在数据库中是字符串类型,所以where number = '?'
这个问号中有个变量,用"+number+" 来连接。。 --------------------编程问答-------------------- 把中文表名、列名全改为英文,where后面的列如果不是number类型,value加'',如 where id='id' --------------------编程问答-------------------- 在Oracle里面你用中文列名或者关键字神马的可以用""双引号搞定!
好像SqlServer用的是[]!
你可以试试哦!
--------------------编程问答-------------------- 最好不要用中文当列名啊。
select * from (select 's' as "天" from dual) where "天" = 's'
补充:Java , Web 开发