DbSession.Default.FromSql("SELECT * FROM Products").ToDataTable();
DbSession.Default.FromSql("SELECT * FROM Products WHERE ProductID = @pid")
.AddInParameter("@pid", DbType.Int32, 1)
.ToDataTable();
注意:SQL 中參數名**必須唯一**,否則會被全部取代(如 WHERE ProductID = ProductID 會變 WHERE @ProductID = @ProductID)。
DbSession.Default.FromSql("SELECT * FROM Products WHERE ProductID = @pid OR CategoryID = @cid")
.AddInParameter("@pid", DbType.Int32, 1)
.AddInParameter("@cid", DbType.Int32, 2)
.ToDataTable();
DbParameter[] parameters = new DbParameter[2];
parameters[0] = DbSession.Default.Db.DbProviderFactory.CreateParameter();
parameters[0].ParameterName = "@pid"; parameters[0].DbType = DbType.Int32; parameters[0].Value = 1;
parameters[1] = DbSession.Default.Db.DbProviderFactory.CreateParameter();
parameters[1].ParameterName = "@cid"; parameters[1].DbType = DbType.Int32; parameters[1].Value = 2;
DbSession.Default.FromSql("SELECT * FROM Products WHERE ProductID = @pid OR CategoryID = @cid")
.AddParameter(parameters)
.ToDataTable();
int affected = DbSession.Default.FromSql("UPDATE Products SET UnitPrice = UnitPrice * 1.1 WHERE CategoryID = @cid")
.AddInParameter("@cid", DbType.Int32, 1)
.ExecuteNonQuery();
DbTrans trans = DbSession.Default.BeginTransaction();
DbSession.Default.FromSql("DELETE FROM Logs WHERE LogDate < @cutoff")
.AddInParameter("@cutoff", DbType.DateTime, DateTime.Now.AddMonths(-6))
.SetDbTransaction(trans)
.ExecuteNonQuery();
trans.Commit();
FromSql 是 Hxj.Data 的「逃生艙」,提供參數化、交易、Provider 抽象等安全網,但請謹慎使用,核心業務優先用強型別查詢 API。