Pertanyaan pertama:
Katakanlah saya punya
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string storedProc = "GetData";
SqlCommand command = new SqlCommand(storedProc, connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new SqlParameter("@EmployeeID", employeeID));
return (byte[])command.ExecuteScalar();
}
Apakah koneksi ditutup? Karena secara teknis kami tidak pernah mencapai yang terakhir }
seperti return
sebelumnya.
Pertanyaan kedua:
Kali ini saya punya:
try
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
int employeeID = findEmployeeID();
connection.Open();
SqlCommand command = new SqlCommand("UpdateEmployeeTable", connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new SqlParameter("@EmployeeID", employeeID));
command.CommandTimeout = 5;
command.ExecuteNonQuery();
}
}
catch (Exception) { /*Handle error*/ }
Sekarang, katakan di suatu tempat di try
kita mendapat kesalahan dan itu tertangkap. Apakah koneksi masih tertutup? Karena sekali lagi, kami melewatkan sisa kode di try
dan langsung ke catch
pernyataan.
Apakah saya berpikir terlalu linier dalam cara using
kerjanya? yaitu Apakah Dispose()
langsung dipanggil saat kita meninggalkan using
ruang lingkup?