puvinax
جمعه 12 فروردین 1390, 01:17 صبح
با سلام خدمت دوستان
شاید سوال من عجیب به نظر برسد اما اجازه بدید مطرح کنم !
به کد زیر دقت کنید :
public static SqlDataAdapter CreateCustomerAdapter(
SqlConnection connection)
{
SqlDataAdapter adapter = new SqlDataAdapter();
// Create the SelectCommand.
SqlCommand command = new SqlCommand("SELECT * FROM Customers " +
"WHERE Country = @Country AND City = @City", connection);
// Add the parameters for the SelectCommand.
command.Parameters.Add("@Country", SqlDbType.NVarChar, 15);
command.Parameters.Add("@City", SqlDbType.NVarChar, 15);
adapter.SelectCommand = command;
// Create the InsertCommand.
command = new SqlCommand(
"INSERT INTO Customers (CustomerID, CompanyName) " +
"VALUES (@CustomerID, @CompanyName)", connection);
// Add the parameters for the InsertCommand.
command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID");
command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName");
adapter.InsertCommand = command;
// Create the UpdateCommand.
command = new SqlCommand(
"UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " +
"WHERE CustomerID = @oldCustomerID", connection);
// Add the parameters for the UpdateCommand.
command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID");
command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName");
SqlParameter parameter = command.Parameters.Add(
"@oldCustomerID", SqlDbType.NChar, 5, "CustomerID");
parameter.SourceVersion = DataRowVersion.Original;
adapter.UpdateCommand = command;
// Create the DeleteCommand.
command = new SqlCommand(
"DELETE FROM Customers WHERE CustomerID = @CustomerID", connection);
// Add the parameters for the DeleteCommand.
parameter = command.Parameters.Add(
"@CustomerID", SqlDbType.NChar, 5, "CustomerID");
parameter.SourceVersion = DataRowVersion.Original;
adapter.DeleteCommand = command;
return adapter;
}
در حقیقت سوال من به خطوط 11،19،30 و 38 مربوط میشود.
من با ADO.NET آشنا هستم اما سوالم در مورد چرایی وجود و فلسفه پشت دستورات SelectCommand-InsertCommand-UpdateCommand-DeleteCommand است.
چرا در کلاس SqlDataAdapter با اینکه ما SqlCommand رو مشخص میکنیم مثلا در همین خط 6 و 7 دستور SELECT بیان شده است اما باز هم نیاز به بیان دستور SelectCommand داریم؟ مگر نه این است که SELECT بودن، با دستور SQL بیان شده چرا این متد در کلاس SqlDataAdapterایجاد شده است ؟
آیا متد های SelectCommand-InsertCommand-UpdateCommand-DeleteCommand کار ویژه ای انجام میدهند که وجودشان واجب است چون که اینها دقیقا بیانگر همان عملی هستند که دستور SQL به طور واضح بیان میکند وجود اینها چه ضرورتی دارد ؟
ممنون میشم جامع توضیح دهید و البته اگر بشه مقاله ای هم در مورد چرایی وجودشان قرار دهید.
با آرزوی بهترین ها
شاید سوال من عجیب به نظر برسد اما اجازه بدید مطرح کنم !
به کد زیر دقت کنید :
public static SqlDataAdapter CreateCustomerAdapter(
SqlConnection connection)
{
SqlDataAdapter adapter = new SqlDataAdapter();
// Create the SelectCommand.
SqlCommand command = new SqlCommand("SELECT * FROM Customers " +
"WHERE Country = @Country AND City = @City", connection);
// Add the parameters for the SelectCommand.
command.Parameters.Add("@Country", SqlDbType.NVarChar, 15);
command.Parameters.Add("@City", SqlDbType.NVarChar, 15);
adapter.SelectCommand = command;
// Create the InsertCommand.
command = new SqlCommand(
"INSERT INTO Customers (CustomerID, CompanyName) " +
"VALUES (@CustomerID, @CompanyName)", connection);
// Add the parameters for the InsertCommand.
command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID");
command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName");
adapter.InsertCommand = command;
// Create the UpdateCommand.
command = new SqlCommand(
"UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " +
"WHERE CustomerID = @oldCustomerID", connection);
// Add the parameters for the UpdateCommand.
command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID");
command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName");
SqlParameter parameter = command.Parameters.Add(
"@oldCustomerID", SqlDbType.NChar, 5, "CustomerID");
parameter.SourceVersion = DataRowVersion.Original;
adapter.UpdateCommand = command;
// Create the DeleteCommand.
command = new SqlCommand(
"DELETE FROM Customers WHERE CustomerID = @CustomerID", connection);
// Add the parameters for the DeleteCommand.
parameter = command.Parameters.Add(
"@CustomerID", SqlDbType.NChar, 5, "CustomerID");
parameter.SourceVersion = DataRowVersion.Original;
adapter.DeleteCommand = command;
return adapter;
}
در حقیقت سوال من به خطوط 11،19،30 و 38 مربوط میشود.
من با ADO.NET آشنا هستم اما سوالم در مورد چرایی وجود و فلسفه پشت دستورات SelectCommand-InsertCommand-UpdateCommand-DeleteCommand است.
چرا در کلاس SqlDataAdapter با اینکه ما SqlCommand رو مشخص میکنیم مثلا در همین خط 6 و 7 دستور SELECT بیان شده است اما باز هم نیاز به بیان دستور SelectCommand داریم؟ مگر نه این است که SELECT بودن، با دستور SQL بیان شده چرا این متد در کلاس SqlDataAdapterایجاد شده است ؟
آیا متد های SelectCommand-InsertCommand-UpdateCommand-DeleteCommand کار ویژه ای انجام میدهند که وجودشان واجب است چون که اینها دقیقا بیانگر همان عملی هستند که دستور SQL به طور واضح بیان میکند وجود اینها چه ضرورتی دارد ؟
ممنون میشم جامع توضیح دهید و البته اگر بشه مقاله ای هم در مورد چرایی وجودشان قرار دهید.
با آرزوی بهترین ها