30/09/2018, 16:06
Hàm boolean luôn trả lại kết quả true(lỗi)
Mình có viết một hàm boolean để kiểm tra tài khoản và xe ứng với một giá trị deviceCode cụ thể, mình viết như sau:
public boolean GetDiviceByDeviceCode( String accountID, String deviceID) throws DBException
{
DBConnection dbc = null;
Statement stmt = null;
ResultSet rs = null;
boolean success = true;
try {
String sql = "select * from Device where accountID =' "+accountID+"' and deviceID ='"+deviceID
+"' and deviceCode = 'TSTZ05RS232' ";
dbc = DBConnection.getDefaultConnection();
stmt = dbc.execute(sql);
rs = stmt.getResultSet();
if(rs == null)
{
success = false;
}
else
success = true;
}
catch (Exception e)
{
throw new DBException(e.getMessage());
}
return success;
}
Sau đó mình dùng MySQL kiểm tra lại thì một số cho giá trị true(show được kết quả), một số cho ra null (false). Nhưng code java của mình gọi hàm này thì luôn cho giá trị true(ngay cả với những account cho ra kết quả null ở phần kiểm tra trên MySQL). Mình muốn hỏi là tại sao hàm boolean của mình luôn trả lại giá trị đúng(true)?
Bài liên quan
Kiểm tra lại, có thể
rs
không bằngnull
Đúng là rs chỉ null khi nó không kết nối được tới db hay câu truy vấn sai
Vậy dùng điều kiện khác đừng kiểm tra với
null
mình sửa lại như bác @ltd và gọi nó
nhưng không ra được kết quả(trong trường hợp true)(không in ra được gì )
Trước hết là sửa như trên có giải quyết được vấn đề này không, chưa nói đến trường hợp true.
Có giải quyết được bác(th luôn trả lại true), giờ thì dù true hay false đều k in ra đc gì(k kết quả đúng cũng không error message)
Vậy xong Lập topic khác, thảo luận vấn đề khác. Bạn viết code ra, đừng ghi mã giả thế này, vì Đạt không rõ cái gì là
sth
.sorry, mình lan man quá
Theo mình thấy source của bạn nếu có exception thì sẽ chả có return ra true hay false gì cả.
Bác đang nói về code mà em vừa post ở bên trên ạ?
@bachtiensinh cao nhân cao nhân. Vậy giờ mình bỏ cái rethrow đi hả?
Thì mình ko rõ mục đích throw Exception là gì, nếu đoạn code ở ngoài có bắt lại xử lý thì ok, nhưng ý chính là nếu có exception thì đoạn
sẽ không in ra gì cả nếu có Exception.
Bạn gán
boolean success = true
làm giá trị mặc địnhSau đó bạn
try catch
mà lại đểif else
gán giá trị củasuccess
trongtry { }
thì nếu cóException
xảy ra,boolean success
sẽ luôn trả vềtrue
là hiển nhiên.Mình không chắc lắm về mục đích của bạn, nhưng có vẻ sửa như vầy sẽ đúng ý bạn muốn:
Thêm
success = false;
vàocatch { }
thì lúc này nếurs == null
thìsuccess = false;
nếu cóException
thìsuccess = false;
luônTrường hợp nếu rs chỉ null khi có lỗi thì chẳng cần if else gì hết. Cứ bên trong try gán success = true, bên trong catch gán success = false
Mình nghĩ bạn nên đưa cái if…else ra ngoài try…catch… Như vậy dễ debug hơn
Đồng ý, làm vậy hợp lý hơn. Khi nào query không bị lỗi thì mới giải quyết tiếp