.net通用数据库访问组件SQL Artisan应用简介1

  描述

    SQL Artisan是基于C#实现的通用数据库访问组件;编写SQL Artisan的主要目的不并是灵活地处理不同数据库操作,而是通过SQL Artisan更灵活和高效的编写数据库访问代码。组件除了提供O/R M功能外,还提供一系列的SQL语句相关对象;可以让你在不同情况下选择适合的方式来访问数据库。对象化的条件对象除了提供了对象操作的方便性和灵活性外,还保持了传统SQL语句条件的编写方式;给使者带来更方便的操作方式。对数据函数的支持更是组件一大特色,组件以扩展的方式对数据库函数进行支持;通过函数的调用可以让你创建更复杂的查询条件满足你实际的需要。

NorthWind数据库的应用

       以下是通过组件Query对象做一个相关查询的应用(代码中还提供简单的O/R M读取操作),为了方便直接使用了MSSQLNorthwind数据。下面代码主要常见的订单查询,查询涉及了三个表:Orders,Employees,Customers;查询过程中还涉及了两个查询条件:相关客户和相关雇员。

private void LoadData()

     {

         using(IDataSession session = MappingContainer.ConfigContainer.OpenSession())

         {

              //获取一个关联查询对象

              IQuery query = session.CreateQuery(Orders.TBL.INNER(Customers.TBL,Orders._CustomerID)

                                     &Orders.TBL.INNER(Employees.TBL,Orders._EmployeeID));

                   //设置查询获取的字段列表

              query.Selects= new FieldAdapter[]{Orders._ALL,

                                                         Customers._CompanyName.As("CompanyName"),

                                                         (Employees._FirstName+Employees._LastName).As("EmployeeName")};

                   Expression exp = new Expression();

                   if(DroCustomers.SelectedValue !="")//当选择相关客户时添加相应查询条件

                   {

                       exp &= Orders._CustomerID.At(Orders.TBL) == DroCustomers.SelectedValue;

                   }

                   if(DroEmployees.SelectedValue != "")//当选择相应雇员时添加相应查询条件

                   {

                       exp &= Orders._EmployeeID.At(Orders.TBL) == int.Parse(DroEmployees.SelectedValue);

                   }

                   query.Expreesion =exp;//设置查询的查询条件

                   session.Open();

                   this.OrdersGrid.DataSource = query.ExecuteDataSet().Tables[0];

                   this.OrdersGrid.DataBind();

              }

         }

     从上面代码看到组件在创建一个关联表是很简单的事情。

Orders.TBL.INNER(Customers.TBL,Orders._CustomerID)

         &Orders.TBL.INNER(Employees.TBL,Orders._EmployeeID)

     由于是基于对象的操作,从而解决在编写过程一些小错误的发生;如:表名编写错或关键字编写错等。
    条件的编写同样也是极为方便

    if(DroCustomers.SelectedValue !="")//当选择相关客户时添加相应查询条件

     {

         exp &= Orders._CustomerID.At(Orders.TBL) == DroCustomers.SelectedValue;

     }

     上面的代码就是把条件以and的方式累加起来。

 

应用代码下载

posted on 2006-04-05 12:55  henry  阅读(2337)  评论(1编辑  收藏  举报

导航