查询
SubSonic2.1版本 – 例出3种查询。
Product product = new Select().From<Product>()
.Where(Product.ProductIDColumn).IsEqualTo()
.ExecuteSingle<Product>();
Product product = DB.Select().From<Product>()
.Where("ProductID").IsEqualTo()
.ExecuteSingle<Product>();
Query query = new Query(Product.Schema);
query.WHERE("ProductID=4").ORDER_BY("ProductID asc");
IDataReader dr = Product.FetchByQuery(query);
DataSet product = new Query(Product.Schema).WHERE("ProductID=4").
ORDER_BY("Prod uctID asc").ExecuteDataSet(); 关联查询
DataSet product = new Select(
Product.ProductNameColumn,
Category.CategoryNameColumn
).From<Product>()
.InnerJoin(Category.CategoryIDColumn, Product.CategoryIDColumn)
.Where(Category.CategoryIDColumn).IsGreaterThan()
.ExecuteDataSet();
注意. InnerJoin(f2, f1) 的使用方法。
分页查询
List<Product> products = new Select().From<Product>()
.Where(Product.ProductIDColumn).IsEqualTo()
.Paged(, )
.ExecuteTypedList<Product>();
分组
SubSonic.SqlQuery query = DB.Select(Aggregate.GroupBy("CompanyName"))
.From("Customers")
.LeftOuterJoin("Orders"); 查询—返回对象
ExecuteReader(); 返回DataReader
ExecuteScalar(); 返回对象
ExecuteScalar<string>(); 返回泛型对象
ExecuteSingle<Product>(); 返回表实体对象
ExecuteTypedList<Product>(); 返回泛型表实休数据集
ExecuteDataSet(); 返回DataSet
ExecuteJoinedDataSet<强数型数据集>(); 返回关联查询 DataSet
Execute(); 返回执行后,数据更新条数 SQL关键词
IsEqualTo(obj) // 等于 value
IsBetweenAnd(obj1, obj2) // [字段1] BETWEEN 值1 AND 值2
StartsWith // LIEK '1%‘
EndsWith // LIEK '%1‘
IsGreaterThan // [字段1] > 值1
IsGreaterThanOrEqualToIsGreaterThan // [字段1] >= 值1
IsLessThan // [字段1] < 值1
IsLessThanOrEqualToIsLessThan // [字段1] <= 值1
WhereExpression / AndExpression // Expression 表示括号
C#:
.Where("").IsGreaterThan()
.And("").IsGreaterThanOrEqualTo()
.AndExpression("").IsLessThan()
.AndExpression("").IsLessThanOrEqualTo().And("").StartsWith("")
.AndExpression("").EndsWith("")
.ExecuteSingle<Product>();
SQL:WHERE > @1AND >= @ AND ( < @) AND ( <= @ AND LIKE @) AND ( LIKE @) 修改
Product product = new Product();
product.ProductName = "amo";
product.Save();
int i = new Update(Product.Schema)
.Set(Product.ProductNameColumn).EqualTo("Chai -- Amo")
.Where(Product.ProductIdColumn).IsEqualTo()
.Execute(); 添加
Product product = new Product();
product.ProductName = "my xiaoli";
product.SupplierID = ;
product.CategoryID = ;
product.Discontinued = true;
//............
product.Save();
int i = new Insert().Into(Product.Schema,
"ProductName",
"SupplierID",
"CategoryID",
"Discontinued“
)
.Values("my amo", , , ).Execute(); 删除
int i = new Delete ().From<Product>()
.Where(Product.ProductIDColumn). IsEqualTo()
.Execute();
//删除
Query qr = EaiSmsCustom.Query().AddWhere("age", ).AddWhere("name", );
qr.QueryType = QueryType.Delete;
qr.Execute(); 事务1
List<Insert> queries = new List<Insert>();
queries.Add(new Insert().Into(Product.Schema).Values("product1"));
queries.Add(new Insert().Into(Product.Schema).Values("product2"));
queries.Add(new Insert().Into(Product.Schema).Values("product3"));
queries.Add(new Insert().Into(Product.Schema).Values("product4"));
queries.Add(new Insert().Into(Product.Schema).Values("product5"));
queries.Add(new Insert().Into(Product.Schema).Values("product6"));
queries.Add(new Insert().Into(Product.Schema).Values("product7"));
//execute in a transaction
SqlQuery.ExecuteTransaction(queries);
事务2
using (SharedDbConnectionScope sp = new SharedDbConnectionScope())
{
using (TransactionScope scope = new TransactionScope())
{
// coding....
scope.Complete();
}
} 减少对ActiveRecord的依赖
MyProduct product = new Select(
Product.ProductNameColumn,
Category.CategoryNameColumn
).From<Product>()
.InnerJoin(Category.CategoryIDColumn, Product.CategoryIDColumn)
.Where(Category.CategoryIDColumn).IsGreaterThan()
.ExecuteSingle<MyProduct>();
string cname = product.CategoryName;
string pname = product.ProductName; 自定义MyProduct实体类
public class MyProduct : ActiveRecord<MyProduct> {
public string CategoryName {
get { return GetColumnValue<string>(Category.Columns.CategoryName); }
set { SetColumnValue(Category.Columns.CategoryName, value); }
}
public string ProductName {
get { return GetColumnValue<string>(Product.Columns.ProductName); }
set { SetColumnValue(Product.Columns.ProductName, value); }
}
} string str=DB.Select(EaiService.NameColumn).Top("").From<EaiService>.Where(EaiService.NameColumn).IsEquealTo(name).ExecuteScalar<string>(); string str = DB.Select(Aggregate.Count(EaiUserMap.ApplicationColumn, "Count")).From<EaiUserMap>().ExecuteScalar<string>(); EaiService es = DB.Select().From<EaiService>()
.Where(EaiService.ApplicationColumn).IsEqualTo(title)
.ExecuteSingle<EaiService>();
if (es != null)
{
bt = es.ServiceNameS.ToString();
} //删除
Query qr = EaiSmsCustom.Query().AddWhere("age", ).AddWhere("name", );
qr.QueryType = QueryType.Delete;
qr.Execute(); 存储过程调用
以下是利用SubSonic2.0使用该存储过程的代码:
-----------------------------------代码开始------------------------------------
public static int GetRUID(string tblName)
{
StoredProcedure spd = new StoredProcedure("GenerateRUID");
spd.Command.AddParameter("@tblName", tblName);
spd.Command.AddOutputParameter("@currentnumber");
spd.Execute();
int currentnumber = int.Parse(spd.OutputValues[].ToString());
return currentnumber;
}
Subsonic的使用之基本语法、操作()
新增、修改:
Subsonic中的新增和修改可以共享一个方法(InsertOrUpdate):
user.InsertOrUpdate(); //其中user是传入的用户实体
return user.Fid;
当然它们也有自己独立的方法:
² 新增:
notice.Save();//其中notice是传入的公告实体
return NoticeId = notice.Fid;
² 修改
int i = new Update(CyReceiver.Schema)
.Set(CyReceiver.FStateColumn).EqualTo()
.Where(CyReceiver.FNoticeIDColumn).IsEqualTo(noticeId)
.And(CyReceiver.FUserIDColumn).IsEqualTo(userId).Execute();
删除:
DB.Delete().From(CyUser.Schema).Where(CyUser.FidColumn).IsEqualTo(id).Execute();
SQL关键词:
Select、Delete、Insert、Update、Form、Where这些和SQL一样的就不解释了
IsEqualTo:where条件中的“等于”
如:Where(CyReceiver.FNoticeIDColumn).IsEqualTo(noticeId)
IsNotEqualTo: where条件中的“不等于”
EqualTo:set语句中的“等于” 如: Set(CyReceiver.FStateColumn).EqualTo()
IsGreaterThan :where中的“大于”
IsGreaterThanOrEqualTo:大于等于
IsLessThan:where中的“小于”
IsLessThan OrEqualTo:小于等于
IsBetweenAnd:区间
如:Where(CyNotice.FBeginDateTimeColumn).IsBetweenAnd(beginDate, endDate)
OrderAsc:按某字段升序排序 如:OrderAsc(CyUser.Columns.FUsersSort)
OrderDesc: 按某字段降序序排序
And:逻辑中的“且”
Or: 逻辑中的“或”
Like:模糊查询关键词
如:And(CyNotice.FTitleColumn).Like("%" + model.Title + "%")
更常用的是:title=string.Format("%{0}%", model.Title);
And(CyNotice.FTitleColumn).Like(title);
LeftOuterJoin:左外连接 (当然还有RightOuterJoin、Joins、LeftInnerJoin等等)
如:From(CyNotice.Schema)
.LeftOuterJoin(CyUser.FidColumn, CyNotice.FUserIDColumn)
简单的Update使用save方法 没有用到update:
Product product =new Product("Id",);
product.Name="Eason";
product.save();
复杂一点的,就要用到 Update :
Update product= new Update(product.Schema.TableName);
product.From(product.Schema.TableName);
product.Where(product.Columns.id).Like();
product.And(product.Columns.Name).Like(“Eason”);
product.Set(product.Columns.Name).EqualTo(“Hanson Eason”);
product.Execute();

Subsonic的使用之基本语法、操作(2)的更多相关文章

  1. HiSql 实现case语法操作 新一代无实体ORM框架

    HiSql 实现case语法操作 在SqlServer,Oralce,Hana,PostGreSql,MySql 这些数据都支持SQL case语法,平常在实现业务开发中也会常用到,那么HiSql对于 ...

  2. mysql常用语法操作

    一.用户管理: 1.新建用户: >CREATE USER name IDENTIFIED BY 'ssapdrow'; 2.更改密码: >SET PASSWORD FOR name=PAS ...

  3. 关于SQL2005备份和还原的语法操作

    原数据库:restore database 练习版 from disk='D:\db-recovery\@@@.BAK' WITH REPLACE/WITH NORECOVERY备份数据库:backu ...

  4. 【其他-小技巧-Uipath】VB语法操作DataTable分组并求和

    需要对DataTable分组求和的语法:VB.net 和C#中还有点不太一样.最后试了好多方法,要这么写 我的dataTabel数据: (From p In dataTabel.AsEnumerabl ...

  5. 2017年9月19日 JavaScript语法操作

    关于JavaScript个人还是觉得比较有意思的 {在</html>后面写或者在</body>前面写(必须紧贴</body>)} <script> va ...

  6. OC:属性、点语法、KVC

    //属性的属性 属性定义在一个 .h文件里,在这个.h文件里可以定义实例变量(就是这个类的特征),也可以通过   @protery(属性约束关键字) 属性名字类型 属性名 来定义一些属性,在prope ...

  7. C文件操作之写入字符串到指定文件并在屏幕显示

  8. 超出区域文字显示为省略号或者剪切效果——CSS的生僻操作

    每门语言总有那么一些不太常用,却又不可或缺的语法操作.下面说一下,在HTML文件中,如何设置用 "省略号" 和 "剪切" 代替大量文字的效果. 以下是HTML的 ...

  9. js导读,js引入,js选择器,事件,操作页面文档,计算后样式,数据类型

    js导读 ''' js属于编写运行在浏览器上的脚本语言 js采用ECMAScript语法 操作BOM:浏览器对象模型 eg:浏览器上下滑动,浏览器历史记录 操作DOM:文档对象模型 ''' js引入 ...

随机推荐

  1. Jquery ajax运用执行顺序有误怎么解决

    在这儿,可能就要提示一个ajax的一个属性async async默认的设置值为true,这种情况为异步方式,就是说当ajax发送请求后,在等待server端返回的这个过程中,前台会继续执行ajax块后 ...

  2. 触发器运用示例---laobai

    1 触发器 概念:trigger.逻辑对象的一种.当dml的增删改语句执行时,自动触发一系列动作. 分类:dml触发器.ddl触发器(很少见) sql:ddl,dml,dcl 按触发的时间分: 语句执 ...

  3. Thinkphp中controller控制器根据curl函数请求数据

    public function member(){ $url="http://aitequn.tjnit.com/UserAction_findAllUser"; $ch =cur ...

  4. Maven、SecureCRT使用问题汇集

    1 Maven 无法下载pom文件中相关的依赖包 该问题可能有很多原因,我的原因是host中的localhost被修改了,改回来即可! 看起来好像出了一些网络原因的问题,顺着这个方向搜索,发现国外也有 ...

  5. tyvj1034 尼克的任务

    描述 尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构成.尼克的一个工作日为N分钟,从第一分钟开始到第N ...

  6. [Scala] 快学Scala A3L3

    Actor 通过尽可能避免锁和共享状态,actor使得我们能够容易地设计出正确.没有死锁或争用状况的程序. Scala类库提供了一个actor模型的简单实现.AKKA是更高级的actor类库. 19. ...

  7. [Python] 利用Django进行Web开发系列(一)

    1 写在前面 在没有接触互联网这个行业的时候,我就一直很好奇网站是怎么构建的.现在虽然从事互联网相关的工作,但是也一直没有接触过Web开发之类的东西,但是兴趣终归还是要有的,而且是需要自己动手去实践的 ...

  8. Python自动化之django的ORM

    django ORM操作 1.什么是ORM? ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作 ...

  9. 进度条ProgressDialog

    1.效果图 public void click(View view) { final ProgressDialog pdDialog = new ProgressDialog(this); //设置标 ...

  10. destoon去掉会员注册email验证

    修改文件: /module/member/member.class.php 删除61行: //if(!is_email($email)) return $this->_($L['member_e ...