Xin chào tôi đã nhận được mã này đọc dữ liệu từ SQL DB.Sử dụng tên cột khi sử dụng SqlDataReader.IsDBNull
Tôi không biết phải chỉnh sửa như thế nào để tôi có thể sử dụng tên cột gốc và không sử dụng chỉ mục cột.
string query = "SELECT * FROM zajezd WHERE event='" + thisrow+ "' AND year='" + klientClass.Year() + "'";
SqlCommand cmd= new SqlCommand(query, spojeni);
spojeni.Open();
SqlDataReader read= cmd.ExecuteReader();
if (read.Read())
{
maskedTextBox2.Text = read.IsDBNull(24) ?
string.Empty :
read.GetDateTime(24).ToString("MM/dd/yyyy");
Xin cảm ơn trước.
Vì vậy, bạn đang sử dụng SELECT * và cột bạn đang theo sau là cột thứ 24? Đây là một cách khủng khiếp để mã - điều gì xảy ra khi ai đó thay đổi bảng (ví dụ: thêm một cột ở đâu đó giữa 1-23)? Bạn có thể gặp lỗi hoặc bạn có thể xảy ra để nhận cột thời gian ngày khác và không thông báo. Ngoài ra, bạn có thích SQL injection? Vui lòng sử dụng truy vấn được tham số hóa. SQL động như thế này là lý do tại sao có rất nhiều khai thác SQL injection trên web mỗi ngày. –
@NathanKoop trong bản chỉnh sửa của bạn, bạn đã thêm dấu ngoặc đóng. Có lẽ bạn là đúng, nhưng như bạn có thể nhìn thấy từ các ý kiến dưới đây này đưa ra một ý nghĩa rất cụ thể cho các truy vấn được sử dụng bởi OP. Nếu OP chỉ cần một cột thì cách tiếp cận tốt hơn là có thể. – Steve
@Steve xin lỗi vì phản hồi bị trì hoãn. Tôi không nhìn thấy (các) nhận xét mà bạn đang tham chiếu, nhưng tôi đã xóa bỏ phần quăn. Nó không phải là một vấn đề lớn đối với tôi một trong hai cách nếu nó có hoặc không :-) –