上一節講述的是刪除操作,本節將講述如何直接執行sql語句。
直接執行sql語句是使用FromSql方法。
DbSession.Default.FromSql("select * from products").ToDataTable();
這樣看起來親切多了吧,直接sql就可以執行。
當然也可添加參數的啊。
DbSession.Default.FromSql("select * from products where productid=pid").AddInParameter("pid", DbType.Int32, 1).ToDataTable();
這樣的查詢條件是productid=1返回一條記錄。
這裡sql語句中pid要確保唯一,不然都會被替換成參數的。
比如:select * from products where productid=productid 這樣在sqlserver下就會被替換成select * from products where @productid=@productid
這裡只是做了簡單的替換,所以確保申明的參數唯一性。
當多個參數時可如下寫法:
DbParameter[] parameters = new DbParameter[2];
parameters[0] = DbSession.Default.Db.DbProviderFactory.CreateParameter();
parameters[0].DbType = DbType.Int32;
parameters[0].ParameterName = "pid";
parameters[0].Value = 1;
parameters[1] = DbSession.Default.Db.DbProviderFactory.CreateParameter();
parameters[1].DbType = DbType.Int32;
parameters[1].ParameterName = "cid";
parameters[1].Value = 2;
DbSession.Default.FromSql("select * from products where productid=pid or categoryid=cid")
.AddParameter(parameters)
.ToDataTable();
這樣寫似乎太麻煩了,更簡潔的寫法如下:
DbSession.Default.FromSql("select * from products where productid=pid or categoryid=cid")
.AddInParameter("pid", DbType.Int32, 1)
.AddInParameter("cid", DbType.Int32, 2)
.ToDataTable();
這樣就清爽多了。
sql語句的執行也是簡單明了的。
下一節將講述存儲過程的執行。