C# 数据库访问 : Best method to use for getting data

标签 c# database asp.net-mvc-3 dll

我问的原因是,最初所有引用资料和示例都指向方法 2。

但是方法 1 似乎用更少的代码做更多的事情。当然是

  1. 更整洁,
  2. 更好
  3. 更容易阅读/关注
  4. 并具有将 DBNulls 转换为 null 等功能。而不是拥有 自己做。
  5. 处理连接/数据读取器的打开和关闭。

我想不出有什么理由让方法 2 优于方法 1。

(方法 2 可能有一个 using 子句,但由于代码太多,它被放在一个单独的函数中,以便从其他地方调用,因此关闭它会关闭数据读取器,使数据无法访问。)

无论如何,我正在认真考虑返回并更改我的整个 Web 服务以使用方法 1,因为它看起来更好并且易于维护。谁能提出其他建议?

方法一:

using (var db = Database.OpenConnectionString(Library.Properties.Settings.Default.dbConnString, "System.Data.SqlClient"))
        {
            Int32 AccNo = db.QuerySingle("SELECT AccNo FROM Tasks WHERE TaskID = " + TaskID);
        }

方法二:

        sqlComm = new SqlCommand();
        sqlCon = new SqlConnection();
        sqlComm.Connection = sqlCon;

        sqlCon.ConnectionString = global::Library.Properties.Settings.Default.dbConnString;
        sqlComm.CommandText = "SELECT AccNo FROM Tasks WHERE TaskID = " + TaskID;
        sqlCon.Open();
        SqlDataReader data = sqlComm.ExecuteReader();
        while (data.Read())
        {
            Int32 AccNo = (Int32)data["AccNo"];
        }
        sqlCon.Close();
        sqlComm.Dispose();
        if (data != null)
           data.Close();

最佳答案

尝试使用 entity framework

using (var context = new YourDatabaseEntities())
{
    var elements = (from c in context.YourTable where c.TaskId == taskId select c);
}

关于C# 数据库访问 : Best method to use for getting data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8560265/

相关文章:

database - 当存在具有相同数据的另一个用户时如何将数据导入用户

javascript - 如何将 javascript 对象的值输入到 sql 数据库中?

mysql - 违反了完整性约束 - 即使父表中存在行也找不到父键

c# - Obsolete 属性的使用

c# - ASP.NET 添加迁移 'composite primary key error' 如何使用 Fluent API

c# - 在Windows 10下使用SharpDX 2.6.3

c# - 有效函数名称的正则表达式 ([a-zA-Z]\w+)[^\w]

c# - DataContractJSONSerializer 包含列表的嵌套 DataContract 对象

asp.net-mvc-3 - if 语句中的 Asp.net MVC 3 Razor 代码问题

css - 如何在 MVC View 中将文本包装在 DisplayFor 中?