我想篩選我的表以按月顯示記錄,所以我爲用戶輸入製作文本框。現在我不知道我的查詢是否正確。我沒有任何錯誤,但也沒有任何結果。我使用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