1.导读
什么是DSL?领域特定语言(Domain Specific language)通常被定义为一种特别针对某类特殊问题的计算机语言,它不打算解决其领域外的问题。了解更多
2.你使用JDBC来
存取
数据时,怎么处理你的SQL
2.1 对于一个固定条件的查询,我们会使用PreparedStatement来实现。就像下面这个例子,只需要DateOfBirth一个固定条件来查询。
PreparedStatement statement=null;try{
Connection connection=getConnection();
statement=connection.prepareStatement("SELECT Name"+"FROM Students"+"WHERE DateOfBirth
statement.setDate(1,newjava.sql.Date(newjava.util.Date().getTime()));
ResultSet rs=statement.executeQuery();while(rs.next()) {
System.out.print(rs.getString(1));
}
}catch(SQLException e) {
e.printStackTrace();
}
2.2 你遇到过这样的问题么?
你使用JDBC来实现数据存取,如果你要实现一个复杂条件的查询,而且条件数目还不一定,这时候就很难使用PreparedStatement来
解决了,因为你的SQL模板不是固定的。就像上面的这个例子,如果用户可能要使用DateOfBirth或者Name作为条件查询,或者还有更多的条件。
2.3 这个问题可以怎么解决呢?
你当然可以使用简单的字符串拼接,根据不同的条件拼接成不同的SQL。就像以下代码
intid=0;
String name="Heis";
String gender="male";
String sql="select Name from Students where id="+id;if(name!=null) {
sql+="and name='"+name+"'";
}if(gender!=null) {
sql+="and gender='"+gender+"'