gpt4 book ai didi

c# - 编写数据访问层方法的正确方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 20:31:59 24 4
gpt4 key购买 nike

这够好吗?我需要添加或删除任何东西吗?像回滚到我的 SQL 查询?添加捕获()?我的函数应该只接受我需要的属性还是它自己的对象?以及如何让表示层知道函数的代码已正确执行。我应该把它写成 book 而不是 void 还是什么?

    public static void DeleteAllCabinFeaturesFromACruise(int CruiseID)
{
string commandText = "DELETE FROM Cruise_Features WHERE CruiseID = @cruiseId";
SqlConnection connection = new SqlConnection(ConnectionString);
SqlCommand command = new SqlCommand(commandText, connection);

try
{
using (connection)
{
using (command)
{
command.Parameters.AddWithValue("@cruiseId", CruiseID);
connection.Open();
command.ExecuteScalar();
}
}
}

finally { connection.Close(); }
}

最佳答案

您没有正确使用 usingusing 的想法是包装一些需要在安全西部释放的资源,以保护它免受异常影响。所以,using的正确使用方法(哈哈)如下:

using(SqlConnection connection = new SqlConnection(ConnectionString)){
{
using(SqlCommand command = new SqlCommand(commandText, connection)){
//your code here
}
}

第二个问题是您正在执行查询,就好像它应该返回标量值一样。没关系,但我认为最好只使用 Execute:command.Execute(); 而且,如果你想要一些错误处理,你最好包装

connection.Open();
command.ExecuteScalar();

try ... catch block 中,就像您拥有的那样。像这样:

//I would place it inside inner-most using block, but nothing wrong placing it outside
try{
connection.open();
command.Parameters.AddWithValue("@cruiseId", CruiseID);
command.Execute();
}
//this catches ALL exceptions, regardless of source. Better narrow this down with
//some specific exception, like SQLException or something like that
catch (Exception e){
return false; //or whatever you need to do
}

关于c# - 编写数据访问层方法的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7089216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com