如何在Sql中转义String数据

时间:2018-02-03 11:47:07

标签: sql

这就是我所拥有的

String LabelText= SemiLabel.getText(); //the value in the label is "Year 1 Sem I";
Connection conn=dbc.connect() ;

这就是我所拥有的

String LabelText= SemiLabel.getText(); //the value in the label is "Year 1 Sem I";
Connection conn=dbc.connect() ;
Resultset rs =conn.createStatement().excuteQuery("Select SchoolOfMusic, Semester FROM Units, registeredUnitsTable WHERE Semester = " +LabelText) 

问题是第一行'1 Sem I'附近出现语法错误。

我如何在sql中转义它以获取'Year 1 Sem I'而不是'1 Sem I',将我收到的数据与数据库专栏学期的数据进行比较。

2 个答案:

答案 0 :(得分:3)

使用PreparedStatement将字符串插入查询:

Connection conn=dbc.connect();
PreparedStatement ps = conn.prepareStatement("Select SchoolOfMusic, Semester FROM Units, registeredUnitsTable WHERE Semester = ?");
ps.setString(1, LabelText);
ResultSet rs = ps.executeQuery();

答案 1 :(得分:0)

您需要在查询中将文本指定为单个SQL文字值。简单的方法是用单引号括起文本:

Resultset rs =conn.createStatement()
  .excuteQuery("Select SchoolOfMusic, Semester FROM Units, registeredUnitsTable WHERE Semester = '"
     + LabelText + "'")

更好的方法是让驱动程序使用占位符处理它并调用setObject()