动态网站制作指南
[  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库学院 > 数据库技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Access教程,DB2教程,数据库安全,数据库文摘
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ 数据库技巧 ]的信息

本月文章推荐
.启动SQL SERVER时自动执行存储过.
.事务日志被填满的原因是什么?.
.剖析SQL Server 2005中的报告服务.
.带你快速了解“存储过程”的定义.
.sql server里面可能经常会用到的.
.使用 IP 地址连接到 SQL Server .
.Sql server 如何得到汉字的声母.
.sql语句简单解决同个字段不同标识.
.不能安装SQL Server 2005的问题及.
.JS中通过字符串构造指定的日期对.
.分析MS SQL Server里函数的两种用.
.sql server存储过程、存储函数的.
.SQL Server的链接服务器技术小结.
.sql server 2005 批量导入导出.
.MSSQLServer2000的排序功能原来这.
.从SQL备份文件中导入现存数据库中.
.如何维护SQL Server的“交易日志.
.sql server分布式事务解决方案.
.视图上含有row_number分析函数没.
.SQL Server 2000的数据库容量究竟.

SQL Artisan 1.3功能使用介绍

文章类别:数据库技巧 | 发表日期:2006-9-11 |


       经过一段时间的修改SQL Artisan1.3功能已经完成,新版本并没引入太多的新功能,主要着手于使用方便性上的改进和完善。在这个版本中你可以看到数据操作变得很方便简洁,包括数据查询和统计;大部分的操作方式都是基于条件的驱动,让使用者在数据查询和统计中只关心条件,从而达到简单快捷地实现相关数据操作功能。由于这个版对基础的修改比较多因此并不稳定,在这里发表组件使用功能的主要目的是想得到大家意见。

       接下来介绍SQL Artisan1.3的功能使用,主要包括以下几个方面:数据修改操作,数据查询操作(包括复杂的关联查询),聚合统计。通过介绍组件使用的过程你会体会组件在数据操作上的方便性,其效果相信不会令你失望;当然更希望得到的是你宝贵的意见。

       数据修改:

              1)数据添加:

基于对象方式添加数据和其他持久化组件没多大区别,实例化相应实体对象后进行Add操作。

              Employees item = new Employees();

              if((DBMapping.Employees.FirstName =="fan" & DBMapping.Employees.LastName =="henry").Count()>0)

              {

                   Console.WriteLine("雇员信息已经存在!");

                  

              }

              else

              {

                   item.FirstName ="Fan";

                   item.LastName ="Henry";

                   item.HireDate = DateTime.Parse("2001-12-25");

                   item.BirthDate = DateTime.Parse("1992-1-28");

                   item.Photo = new byte[0];

                   item.ReportsTo=1;

                   DAOContext.Add(item);

              }

组件除了添加对象方式添加数据以外,可以通过直接操作相关Table映射模型进行数据添加操作;通过这种方式可以灵活地控制在添加数据时操作那个字段模型。

              DBMapping.Employees.Insert(

              DBMapping.Employees.FirstName.Set("He"),

              DBMapping.Employees.LastName.Set("LiQing")

              );

              2)数据修改:

数据修改同样也提供两种方式,基于对象和字段模型。

//以对象方式更新

              Employees item =(Employees)DAOContext.Load(typeof(Employees),1);

              item.City ="GuangZhou";

              DAOContext.Edit(item);

 

              //以字段模型更新

              (DBMapping.Employees.EmployeeID == 1).Update(

                   DBMapping.Employees.City.Set("GuangZhou")

                   );

              3)数据删除:

组件数据删除完成可以基于条件驱动的方式来进行操作。

              //删除索引是1000 的雇员信息

              (DBMapping.Employees.EmployeeID ==1000).Delete();

 

              //删除索引是101,102和103的雇员信息

              DBMapping.Employees.EmployeeID.In(101,102,103).Delete();

 

              //删除FirstName是Fan或He的雇员信息

              (DBMapping.Employees.FirstName=="Fan" | DBMapping.Employees.FirstName =="He").Delete();

       数据查询:

组件的数据查询主要有几种方式,通过DAOContext对象、Table模型对象和条件驱动方式。条件驱动是最简化的一种使用方式,因为下面描述的例程都是基于条件驱动的查询.

              对象查询:

              //获取所有雇员信息

              Expression exp = new Expression(DBMapping.Employees);

              System.Collections.IList list = exp.List();

 

              //获取国家是USA的所有雇员信息

              list = (DBMapping.Employees.Country=="USA").List();

 

              //获取订单日期在1997-7-1和1997-8-1之间订单记录

              list =(DBMapping.Orders.OrderDate>= DateTime.Parse("1997-7-1") &

                       DBMapping.Orders.OrderDate < DateTime.Parse("1997-8-1")).List();

 

              //获取USA国家雇员的所有订单

              list =(DBMapping.Orders.Employee==(DBMapping.Employees.Country =="USA")).List();

 

              //获取SP地区客户的所有订单

              list=(DBMapping.Orders.Customer ==(DBMapping.Customers.Region=="SP")).List();

              视图对象查询:

组件是通过视图对象的方式来体现关联查询的,视图对象主要用于描述对象信息来源于那些表,通过那种方式进行关联和加载那些信息。这样可以集中统一地描述查询需求,从而达到一个比较好的代码重用效果,也简化在查询时一些烦琐信息的编写。

对象视查询例程:

              //获取国家是USA所有雇员的订单信息

              list=(DBMapping.Orders.Employee ==(DBMapping.Employees.Country=="USA")).ListTo(new OrderV());

 

              //获取SP地区在1997-7-1到1997-8-1销售的订单

              list =(DBMapping.Orders.Customer ==(DBMapping.Customers.Region=="SP")

                       & DBMapping.Orders.OrderDate >= DateTime.Parse("1997-7-1")

                       & DBMapping.Orders.OrderDate < DateTime.Parse("1997-8-1")

                       ).ListTo(new OrderV());

制定视图对象:

     /// <summary>

     /// 订单关联查询描述实体类

     /// 相关表:Orders,Employees,Customers;

     /// </summary>

     [TableMap("",TableType.View)]

     public class OrderV:Orders,HFSoft.Data.ITableView

     {

         public OrderV()

         {

              //

              // TODO: 在此处添加构造函数逻辑

              //

          }

         #region ITableView 成员

         /// <summary>

         /// 获以关联表对象

         /// </summary>

         /// <returns>Table</returns>

         public HFSoft.Data.Mapping.Table GetTable()

         {

              // TODO:  添加 OrderV.GetTable 实现

              return DBMapping.Orders.INNER(DBMapping.Employees,DBMapping.Employees.EmployeeID) &

                   DBMapping.Orders.INNER(DBMapping.Customers,DBMapping.Customers.CustomerID);

         }

 

         #endregion

         private string mCustomerName;

         /// <summary>

         /// 客户名称

         /// </summary>

         [ViewColumn("CompanyName")]

         public string CustomerName

          {

              get

              {

                   return mCustomerName;

              }

              set

              {

                   mCustomerName = value;

              }

         }

         private string mEmployeeName;

         /// <summary>

         /// 雇员姓名

         /// </summary>

         [ViewColumn("FirstName+LastName")]

         public string EmployeeName

         {

              get

              {

                   return mEmployeeName;

              }

              set

              {

                   mEmployeeName = value;

              }

         }

     }

        

       聚合统计:

组件只提供一个默认的聚合统计就是基于条件Count操作,此操作并不支持分组功能。但对于其他聚合统计可以通过视图对象的方式来完成,视图对象可以完成数据分组、字段运算等复杂的统计描述。

统计查询例程:

              //获取所有订单数

              Expression exp = new Expression(DBMapping.Orders);

              int count = exp.Count();

 

              //获取国家是USA所有雇员的订单数据

              count=(DBMapping.Orders.Employee ==(DBMapping.Employees.Country=="USA")).Count();

 

              //统计所有订单的销售金额

              SumPrice price =(SumPrice)exp.ListTo(new SumPrice())[0];

             

              //统计1997-7-1到1997-8-1销售金额

              price =(SumPrice)(DBMapping.Orders.OrderDate >= DateTime.Parse("1997-7-1")

                                 & DBMapping.Orders.OrderDate < DateTime.Parse("1997-8-1")).ListTo(new SumPrice())[0];

 

              //汇总雇员销售金额

              System.Collections.IList list = exp.ListTo(new SumPriceByGroup());

 

              //汇总某个国家的雇员销售金额

              list = (DBMapping.Orders.Employee ==(DBMapping.Employees.Country =="USA")).ListTo(new SumPriceByGroup());

 

制定统计描述对象:

     /// <summary>

     /// 订单销售统计描述对象

     /// </summary>

     [TableMap("",TableType.View)]

     public class SumPrice:ITableView

     {

         public SumPrice()

         {

              //

              // TODO: 在此处添加构造函数逻辑

              //

         }

         #region ITableView 成员

 

         public Table GetTable()

         {

              // TODO:  添加 OrderV.GetTable 实现

              return DBMapping.Orders.INNER(DBMapping.Employees,DBMapping.Employees.EmployeeID)

                   &DBMapping.Orders.INNER(DBMapping.Customers,DBMapping.Customers.CustomerID)

                   & DBMapping.Orders.INNER(DBMapping.OrderDetails,DBMapping.Orders.OrderID);

 

         }

         private Double mPrice;

         [StatColumn("Quantity*UnitPrice*(1-Discount)",StatType.Sum)]

         public Double Price

         {

              get

              {

                   return mPrice;

              }

              set

              {

                   mPrice = value;

              }

         }

         #endregion

     }

     /// <summary>

     /// 按雇员分组销售统计描述对象

     /// </summary>

     [TableMap("",TableType.View)]

     public class SumPriceByGroup:SumPrice

     {

         private int mEmployeeID;

         [ViewColumn("Employees.EmployeeID")]

         public int EmployeeID

         {

              get

              {

                   return mEmployeeID;

              }

              set

              {

                   mEmployeeID = value;

              }

         }

     }

http://www.cnblogs.com/henryfan/archive/2006/09/10/500210.html


上一篇:两个数据分页的存储过程 人气:5856
下一篇:一個Select出一個表中第N條記錄的Sql代碼 人气:5452
点击此处浏览全部SQL Artisan 1.3的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-5-16 乘风多用户PHP统计系统 v3.4
2008-5-16 轩溪下载系统 v3.78 build 0515
2008-5-16 普沙B2B 浙江省商贸网 v2.0
2008-5-16 asp抓蜘蛛的小程序 v1.0
2008-5-16 齐齐乐网私服发布站 仿haosf新版
2008-5-16 IssTech信息反馈系统 v1.0
2008-5-16 自由领域大头贴(js接口版) 修正版
2008-5-16 医院网站系统
2008-5-16 智拓-分类信息管理系统 v5.0
2008-5-7 Windows XP SP3 官方英文版
2008-5-7 Windows XP SP3 官方香港中文版
2008-5-7 Windows XP SP3 官方繁体中文版
2008-5-7 Windows XP SP3 官方简体中文版
2008-4-30 Multiple Unzip Wizard 1.02
2008-4-30 Multiple Unrar Wizard 1.0.0
2008-4-30 WinZip Install/Try/Uninstall a
2008-4-30 ZIP压缩文件修复器WzipFix 2.0
2008-4-30 Pentazip 6.01 Build 189 For Wi
  发表评论
姓 名: 验证码: [ 全部贴吧 ] [ 浏览评论 ]
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報