首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据链路层和最佳实践

数据链路层和最佳实践
EN

Stack Overflow用户
提问于 2014-08-05 12:53:22
回答 1查看 71关注 0票数 0

我需要知道以下方法中的最佳实践。我有一个使用分层architecture.In数据层的应用程序,我有两个类,如下所示。

将datatable转换为具有相应业务对象的列表的类。

代码语言:javascript
复制
public List<User> GetUser()
        {
            List<User> user = new  List<User>();
            DataTable dtLoginDetails = new DataTable();
            string selectQuery = "SELECT * FROM user_details";
           try
            {

                dtUserDetails = connection.SelectCommand(selectQuery); // call the function in another class
            }
            catch (MySqlException mx)
            {
                throw;
            }
            if (dtUserDetails.Rows.Count > 0)
            {
               //loops through datatable 'dtUserDetails' and converts to List
            }
            return user;            
        }

另一个类执行所有的数据库操作。

代码语言:javascript
复制
public DataTable SelectCommand(String query)
        {

                DataTable dtSelect = new DataTable();
                try
                {
                    MySqlCommand command = ConnecttoDB().CreateCommand();
                    command.CommandText = query;
                    MySqlDataAdapter dtAdapter = new MySqlDataAdapter(command);
                    dtAdapter.Fill(dtSelect);
                    DisconnecttoDB();
                }
                catch (MySqlException mx)
                {
                    throw;
                }
                finally
                {
                    DisconnecttoDB(); 
                }
                return dtSelect;
        }

所以我只想知道这是不是一个好的方法,或者我应该写一些像下面这样的东西。

代码语言:javascript
复制
 public List<Person> Read()

        {
            con.ConnectionString = ConString;
            if (ConnectionState.Closed == con.State)
                con.Open();
            SqlCommand cmd = new SqlCommand("select * from Person",con);
            try
            {
                SqlDataReader rd = cmd.ExecuteReader();
                while (rd.Read())
                {
                    objP = new Person();
                    objP.ID = Convert.ToInt16(rd.GetValue(0));
                    objP.name = rd.GetString(1);
                    objP.surname = rd.GetString(2);
                    List.Add(objP);
                }

                return List;
            }
            catch

            {
                throw;

            }
        }

在这种情况下,我没有单独类来执行数据库操作,但我需要使用返回不同业务对象的单独sql查询来编写不同的函数。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2014-08-05 13:34:55

您应该具有以下层:

  • database
  • data接入层(负责支持每个table)
  • business层的每个所需操作类型的层(负责算法数据库操作combination)
  • engine
  • UI

的层

假设您有一个银行应用程序,一个用户想要向另一个用户汇款,所以他输入了值,选择了另一个用户,然后单击了一个按钮。这发生在UI上。点击按钮会触发引擎中的事件。事件:汇款。引擎将任务传递给业务层。在业务层上,必须执行算法。在事务内部有两个操作:从您的金额中减去金额,以及为接收方添加相同的金额。然后,业务层将任务传递给访问层,访问层生成要执行的SQL并将其发送到数据库服务器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25131428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档