Select có điều kiện trong C#, nó không hiển thị được!
Mình viết câu lệnh SQL này, thì mình chạy được.
SELECT r.RentID,c.CustomerName,v.VehicleName,r.[Hours], r.[Hours] * v.Rent AS Total FROM Rent as r
INNER JOIN Customer AS c ON r.CustomerID = c.CustomerID
INNER JOIN Vehicle AS v ON r.VehicleID = v.VehicleID
Còn khi mình viết trong C# thì nó không hiển thị, dù mấy câu lệnh SQL như Add, Update, Delete thì chạy bình thường.
Mình muốn hỏi là mình sai chỗ nào và sửa như thế nào. Cám ơn nhiều nha.
public IList getRents()
{
IList result = new List();
try
{
SqlConnection con = new SqlConnection(sCon);
String query = “SELECT r.RentID,c.CustomerName,v.VehicleName,r.[Hours], r.[Hours] * v.Rent AS Total FROM Rent as r INNER JOIN Customer AS c ON r.CustomerID = c.CustomerID INNER JOIN Vehicle AS v ON r.VehicleID = v.VehicleID”;
//String query = “SELECT * FROM Rent”;
SqlCommand com = new SqlCommand(query, con);
con.Open();
SqlDataReader reader = com.ExecuteReader();
while (reader.Read())
{
Rent r = new Rent();
r.rentID = (int)reader[0];
r.customerID = (int)reader[1];
r.vehicleID = (int)reader[2];
r.hours = (int)reader[3];
//r.total = (int)reader[4];
result.Add®;
}
con.Close();
}
catch (Exception ex)
{
ex.ToString();
}
return result;
}
Chào bạn @Magensa. Theo như đoạn code ở trên mà bạn đưa ra thì mình nhận thấy rằng bạn đặt câu lệnh
con.Open()
sau câu lệnhSqlCommand com = new SqlCommand(query, con);
bởi vì code sẽ được biên dịch tuần tự từ trên xuống dưới nên khi thực thiSqlDataReader reader = com.ExecuteReader();
biếnreader
sẽ nhận giá trịnull
đây chính là lý do mà khiến choQuery
không có kết quả trả về. Bạn phải đặt câu lệnhcon.Open()
sau khi khai báoSqlConnection con = new SqlConnection(sCon);
nhé.