bu basit yöntemi düşünün: örnek yöntemi bir sütunun değeri maçları, basit olmalıdır bazı tablodan her şeyi seçmek gerekiyorduNULL ve normal değerler farklı hazırlanmış ifadeler kullanılmadan nasıl işlenebilir?
public ResultSet getByOwnerId(final Connection connection, final Integer id) throws SQLException {
PreparedStatement statement = connection.prepareStatement("SELECT * FROM MyTable WHERE MyColumn = ?");
statement.setObject(1, id);
return statement.executeQuery();
}
. Çirkin ayrıntı, kimliği için NULL geçerek boş bir ResultSet sonuçlanır, DB kaç tane satır var olursa olsun, SQL NULL, null değil, null değil, anyaling değil, NULL tanımlar. fıkra nerede farklı kullanıyor bildiğim bu satırları seçmek için tek yol: Maalesef
SELECT * FROM MyTable WHERE MyColumn IS NULL
tek yolu her durumda düzgün yöntem çalışması için bir, iki tamamen farklı bir yürütme pathes var gibi görünüyor id argümanının null olduğu ve normal değerler için olduğu durum için.
Bu çok çirkindir ve null olabilecek birden fazla sütuna sahip olduğunuzda çok hızlı bir şekilde dağınık olabilir. Aynı kod yolu/deyimiyle NULL ve normal değerler nasıl işlenebilir?
JDBC kullanmayın, ancak '='/'NULL' dinamik olarak seçildiğinden IS böylece C# genellikle Bunu ayarlamak?. Varsa, parametre, hazırlanan deyimle hala bağlanır. –
SQL Server kullanıyorsanız, sadece “ANSI_NULLS OFF” ve “field = NULL” komutlarını kullanabilirsiniz. – NullUserException
Hazırda Beklet veya JPA'yı düşünün. Sizi JDBC boilerplate'den koruyacak. – BalusC