ASP.NET网站中的数据访问层

时间:2014-06-04 21:07:24

标签: asp.net sql data-access-layer

我的项目中有一个DAL类文件,我的老师发给我并向我解释但我并不理解。它有很多功能,我只了解其中的几个,比如连接到数据库或创建一个命令对象,但有2个我不明白:

public static DataTable GetTable(string str) 
{
    OleDbConnection con = DAL.GetConnection();

    OleDbCommand cmd = DAL.GetCommand(con, str);

    DataTable dt = new DataTable();
    OleDbDataAdapter adp = new OleDbDataAdapter();
    adp.SelectCommand = cmd;
    adp.Fill(dt);
    return dt;
}

public static int ExecuteNonQuery(string str)
{
    int num = -1;
    OleDbConnection con = DAL.GetConnection();
    con.Open();
    if (con.State == ConnectionState.Open)
    {
        OleDbCommand cmd = DAL.GetCommand(con, str);
        num = cmd.ExecuteNonQuery();
        con.Close();
    }
    return num;
}

2 个答案:

答案 0 :(得分:3)

public static DataTable GetTable(string str) 
{
    OleDbConnection con = DAL.GetConnection();

    OleDbCommand cmd = DAL.GetCommand(con, str);

    DataTable dt = new DataTable();
    OleDbDataAdapter adp = new OleDbDataAdapter();
    adp.SelectCommand = cmd;
    adp.Fill(dt);
    return dt;
}

此方法填充数据表,即从数据库中提取的数据被填充(或添加)到临时虚拟表(存储在内存中)中,以便您可以使用该数据在UI上显示。从数据库中获取后,您还可以在UI上显示它之前对其执行某些操作。

public static int ExecuteNonQuery(string str)
{
    int num = -1;
    OleDbConnection con = DAL.GetConnection();
    con.Open();
    if (con.State == ConnectionState.Open)
    {
        OleDbCommand cmd = DAL.GetCommand(con, str);
        num = cmd.ExecuteNonQuery();
        con.Close();
    }
    return num;
}

此方法执行非查询,即它对数据库执行操作。此操作本身可以是插入,更新或删除操作。这些操作是根据SQL语言语法指定的。

这只是一个简单的解释。在Google上搜索以获得进一步的理解。

您可以查看此链接:http://msdn.microsoft.com/en-us/library/aa581776.aspx

它将帮助您理解数据访问层的基础知识。

希望这有帮助!!!

答案 1 :(得分:0)

当您使用连接,命令或需要在其范围末尾处理的任何其他对象时,学习使用 using 语句也是很好的。

使用语句有几点评论,例如:

  1. using语句确保即使发生异常也会调用Dispose
  2. 无需使用尝试块,然后在最终块上调用dispose
  3. 一旦调用Dispose,它也会导致对象本身超出范围。
  4. 参考:MSDN

    因此您的代码也可以像这样改进:

        public static DataTable GetTable(string str)
        {
            using (var con = DAL.GetConnection())
            {
                using(var cmd = DAL.GetCommand(con, str))
                {
                    return SetDataTable(cmd);
                }
            }
        }
    
        public static int ExecuteNonQuery(string str)
        {
            using (var con = DAL.GetConnection())
            {
                using (var cmd = DAL.GetCommand(con, str))
                {
                    return cmd.ExecuteNonQuery();
                }
            }
        }
    
        private static DataTable SetDataTable(OleDbCommand cmd)
        {
            DataTable dt = new DataTable();
            OleDbDataAdapter adp = new OleDbDataAdapter();
    
            adp.SelectCommand = cmd;
            adp.Fill(dt);
            return dt;
        }