sql语句写法问题‘“ ”“

求教为什么要这样写 为什么要写成 '" + name + "'为什么有加号,为什么双引号外面还要+个单引号
String sql = "select * from t where username = '" + name + "' and password = '" + passwd + "'";

String sql = "insert into emp(empno, ename, job, mgr, hiredate, sal, comm, deptno) values("
+ emp.getEmpNo()
+ ", "
+ " '"
+ emp.getEname()
+ "', "
+ " '"
+ emp.getJob()
+ "', "
+ emp.getMgr()
+ ","
+ "to_date('"
+ emp.getHiredate()
+ "','yyyy-mm-dd'), "
+ emp.getSal()
+ ", "
+ emp.getComm() + ", " + emp.getDeptno() + ")";

sql

6个回答

这个是拼串的,双引号里面只能是单引号 才会有效果。。。

qq_31080089
一个努力的人儿 回复七彩馒头: sql 在企业中是经常会用到的 有空的话 可以好好练习下
4 年多之前 回复
u011844490
专修虚拟机 谢谢你的回答!
4 年多之前 回复

不要习惯于用sql拼接 很容易被sql注入的 还有“‘是为了正确的格式化

u011844490
专修虚拟机 谢谢你的回答!刚才又学了下PreparedStatement 以后估计不会再用sql拼接了!
4 年多之前 回复

name是一个变量,不能直接放到sql中,sql就是个字符串,你可以把多个变量拼接到一起组成一个完整的sql

u011844490
专修虚拟机 谢谢你的回答!整了好久都没整好!刚才又学了下PreparedStatement才发现sql拼接真是不好用!果断放弃了改用PreparedStatement了
4 年多之前 回复

你把 System.out.println(sql );你就知道了

你这是在字符串拼接,将动态数据如name(也就是你的变量)或者 emp.getComm() (也就是你的方法)的值组织成为SQL语句。另外,双引号和单引号交替使用其中一个将不会被编程语言解析,直接成为SQL语句中的引号。

觉得应该是怕你的name里面有特别的字符 比如是双引号什么的 毕竟是字符串类型的字段

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐