【发布时间】:2019-05-06 10:41:30
【问题描述】:
我正在查询我的DRIVER 和CAR 表,并尝试按name 的字母顺序(ASC、a-z)对我的结果列表进行排序。但是,我的结果表没有反映我的 sql 语句,因为它根本没有按字母顺序排序:(Joe, Lucas, James, Ginny 应该显示为 Ginny, James, Joe, Lucas)。
我已经使用RSA Encryption 加密了这些name 值,然后将它们作为BLOB 数据类型存储在我的DRIVER 表中。这会影响为什么我的查询没有按照我想要的方式排序吗?
详情如下。
我的表格:
DRIVER (driverID, username, name,....)
CAR (license, brand,....)
我的结果表格打印输出:
Driver ID | username | Name | License Plate | Brand
----------------------------------------------------
004 | joe867 | Joe | M8M UZX | Toyota
001 | luke99 | Lucas | A99 PX3 | Hyundai
003 | james3 | James | YPL 393 | Ford
002 | ginny23 | Ginny | HP2 111 | Subaru
我的selectDriver() query 方法(为简单起见,省略了方法名称括号、try-catch 等内容)。
String sql = "SELECT driverID, username, name, license, brand
FROM driver, car
WHERE driver.driverID = car.driverID_FK
ORDER BY name ;"
PreparedStatement pst = connect.prepareStatement(sql);
rs = pst.executeQuery();
List<Driver> list = new ArrayList<Driver>();
while (rs.next()){
Driver driver = new Driver(); //My Driver bean class
driver.setDriverID(rs.getInt(1));
driver.setUsername(rs.getString(2));
...
driver.setBrand(rs.getString(5));
list.add(driver);
}
rs.close();
connect.close();
return list;
我的 JSP 与 JSTL 结果表:
<table>
<tr>
<th>Driver ID</th>
<th>Username</th>
<th>Name</th>
<th>License Plate</th>
<th>Brand</th>
</tr>
<c:forEach var="driver" items="${driverArray}">
<tr>
<td><c:out value="${driver.driverID }"/></td>
<td><c:out value="${driver.username }"/></td>
<td><c:out value="${driver.name }"/></td>
<td><c:out value="${driver.license }"/></td>
<td><c:out value="${driver.brand }"/></td>
</tr>
</c:forEach>
</table>
【问题讨论】:
-
你的车表有名字栏吗?
-
我的
Driver表有name列 -
是的,一组 RSA 加密字符串的排序方式与未加密的同一组字符串不同。您的代码虽然没有显示任何加密解密。另外,为什么要分别加密这些名称?
-
我正在我的
Driver模型类中进行加密/解密。一旦我将我的name解密为普通的String,我该如何解决这个问题? -
您可以在从数据库中获取驱动程序列表后尝试对其进行排序,我不知道您将如何从 sql 内部执行此操作。
标签: java mysql sql jsp sql-order-by