2010-04-01 41 views
9

Tôi đang làm việc trên một dự án nhóm cho lớp và chúng tôi đang thử CheckStyle.Tránh các lỗi số CheckStyle ma thuật trong các truy vấn JDBC

Tôi khá thoải mái với Java nhưng chưa bao giờ chạm vào JDBC hoặc thực hiện bất kỳ công việc cơ sở dữ liệu nào trước đó.

Tôi đã tự hỏi nếu có một cách thanh lịch để tránh các lỗi con số kỳ diệu trong PreparedStatement gọi, hãy xem xét:

 preparedStatement = connect.prepareStatement("INSERT INTO shows " 
       + "(showid, showtitle, showinfo, genre, youtube)" 
       + "values (default, ?, ?, ?, ?);"); 
     preparedStatement.setString(1, title); 
     preparedStatement.setString(2, info); 
     preparedStatement.setString(3, genre); 
     preparedStatement.setString(4, youtube); 
     result = preparedStatement.executeUpdate(); 

Các setString phương pháp được gắn cờ là con số ma thuật, cho đến nay tôi chỉ cần thêm những con số 3-10 hoặc như vậy để bỏ qua danh sách cho các số ma thuật nhưng tôi đã tự hỏi nếu có một cách tốt hơn để đi về chèn các giá trị vào tuyên bố. Tôi cũng cầu xin bạn cho bất kỳ lời khuyên nào khác đến với tâm trí khi nhìn thấy mã đó, tôi muốn tránh phát triển bất kỳ thói quen khó chịu nào, ví dụ: sao tôi nên sử dụng Statement hoặc PreparedStatement? Điều đó sẽ cho phép tôi tham khảo tên cột thay thế? Điều đó có lý tưởng không? v.v ...

Cảm ơn!

+0

Là một lưu ý phụ, cũng hữu ích khi biết cách tránh các số ma thuật trong khi truy xuất dữ liệu - tức là 'getString()' v.v. –

Trả lời

12

Tạo một phương pháp hữu ích mà làm điều gì đó như thế này:

public static void setValues(PreparedStatement preparedStatement, Object... values) throws SQLException { 
    for (int i = 0; i < values.length; i++) { 
     preparedStatement.setObject(i + 1, values[i]); 
    } 
} 

Và sử dụng nó như sau:

setValues(preparedStatement, title, info, genre, youtube); 

hoặc

Object[] values = { 
    title, info, genre, youtube 
}; 

setValues(preparedStatement, values); 

More "thực hành tốt nhất" đối với với mã hóa JDBC cơ bản có thể được tìm thấy trong this article.

Hy vọng điều này sẽ hữu ích.

+0

Điều đó thật tuyệt vời, cảm ơn bạn rất nhiều! – Dan

Các vấn đề liên quan