數據庫組件 Hxj.Data(七) (sql篇)

上一節講述的是刪除操作,本節將講述如何直接執行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();

 

這樣就清爽多了。

 

返回類型還可以如下:

 

IDataReader ToDataReader()

返回DataReader

 

DataSet ToDataSet()

返回DataSet

 

int ExecuteNonQuery()
返回受影響的條數
 
object ToScalar()
返回單個值
 
TResult ToScalar<TResult>()

返回執行類型的值

 

也可返回實體。

TEntity ToFirst<TEntity>()

返回第一條實體

 

List<TEntity> ToList<TEntity>()
返回實體列表
 

sql語句的執行也是簡單明瞭的。

 

下一節將講述存儲過程的執行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章