我想筛选我的表以按月显示记录,所以我为用户输入制作文本框。现在我不知道我的查询是否正确。我没有任何错误,但也没有任何结果。我使用LIKE,因为我没有提供特定的日子。有人可以提出更好的方法吗?使用LIKE搜索仅有年份和月份的日期
ConnectToDatabase conn = null;
conn = ConnectToDatabase.getConnectionToDatabase();
String query = "Select * from inventoryreport where InDate LIKE "+txtYear.getText()+""+ txtMonth.getText()+"";
conn.setPreparedStatement(conn.getConnection().prepareStatement(query));
conn.setResultSet(conn.getPreparedStatement().executeQuery());
java.sql.ResultSetMetaData metaData = conn.getResultSet().getMetaData();
int columns = metaData.getColumnCount();
for (int i = 1; i <= columns; i++) {
columnNames.addElement(metaData.getColumnName(i));
}
您必须正确使用'PreparedStatement'来防止sql注入。 –
你的查询解析为'SELECT * FROM inventoryreport WHERE InDate LIKE 201403'这就是你想要的东西? – Kon
如果该列是* proper * DATE/DATETIME类型,则不需要使用'LIKE'。相反,只需比较'x> = startOfPeriod && x
user2864740