public string CreateSelect(string TableName, string ColumnName, string WhereString ,string OrderString ,params string[] leftTable)
{
StringBuilder strBuilder=new StringBuilder();
strBuilder.Append(string.Format("select {0} from {1} ",TableName,TableName ));
foreach (string leftStr in leftTable)
{
strBuilder.Append(leftStr );//这里参数带不带left join 这些你就自己看着办了
}
if(!string.IsNullOrEmpty(sqlStr)) strBuilder.Append("where "+ WhereString );
if(!string.IsNullOrEmpty(OrderString )) strBuilder.Append("order by "+ WhereString );
}手写代码,自己检查下,顺便说下,这样做没什么意义,数据库查询语句大家都懂,而你自己封装一次,让别人适应你的类吗??没意义
{
StringBuilder strBuilder=new StringBuilder();
strBuilder.Append(string.Format("select {0} from {1} ",TableName,TableName ));
foreach (string leftStr in leftTable)
{
strBuilder.Append(leftStr );//这里参数带不带left join 这些你就自己看着办了
}
if(!string.IsNullOrEmpty(sqlStr)) strBuilder.Append("where "+ WhereString );
if(!string.IsNullOrEmpty(OrderString )) strBuilder.Append("order by "+ WhereString );
}手写代码,自己检查下,顺便说下,这样做没什么意义,数据库查询语句大家都懂,而你自己封装一次,让别人适应你的类吗??没意义
解决方案 »
- 如何使得expandablePanel按照窗口的大小延伸
- OutPutStr
- c#中析构函数怎么写?
- 大家帮我看看这个简单的问题吧,关于textbox的
- 简单问题继续问,各位帮忙啊
- 定义了两个string数组,如何得到数组首地址
- 看过或者用过DOTNET_PETSHOP的朋友进来一下
- 急急急!!!求一个超级变态正则表达式
- SOS 过年拉 老板不发工资了 大家帮下我.
- A(form)是MDI窗体,B(form)是A的子窗体,通过B(form)登录,在A(Form)的菜单中体现出所设置的权限,应该怎么做呀??谢谢各位大侠!!和版
- 如何加快网页的显示速度(页面太大了,不知道如何解决)
- 使用VS自带的混淆器dotfuscator.exe生成Dll后不能调用,请问是什么原因?
在对象持久化技术中对SQL语句的封装就是核心技术之一
在很多不错ORM的框架中也没有一个彻底的解决办法,包括Hibernate。
个人认为,类似的查询封装应当建立在一定的业务基础上,而不是大而全的一个或几个对象及方法中
否则SQL的作用和优势将会被束缚,你会发现SQL的优化及调试等问题在实际应用中变得非常麻烦
所以你做持久层时考虑一下能执行传入的SQL语句
你可以把各个实体类关系定义好,然后反射出来这些关系,然后根据这些关系来join,应该不是很难
<Serializable(), DataTable("tblBuy"), _
QueryTable("tblWareCode", "WareOID", "tblBuy", "WareOID", JoinType:=SQLJoinType.LEFT), _
QueryTable("tblProductArea", "ProductOID", "tblBuy", "ProductOID", JoinType:=SQLJoinType.LEFT), _
QueryTable("tblUnitCode", "UnitOID", "tblBuy", "UnitOID", JoinType:=SQLJoinType.LEFT), _
QueryTable("tblUser", "UserOID", "tblBuy", "BusinessOID", JoinType:=SQLJoinType.LEFT), _
QueryTable("tblMarketWareCode", "CodeOID", "tblBuy", "CodeOID", JoinType:=SQLJoinType.LEFT), _
QueryTable("tblGrade", "GradeOID", "tblBuy", "GradeOID", JoinType:=SQLJoinType.LEFT)> _
Public Class poBuy
Inherits clsPersistence
Private m_strBuyOID As String = ""
'***********************************************************
'* 属性名称:BuyOID
'* 功能描述:编号属性,表Guid类型主键
'* 作 者:
'* 创建日期:2004-02-20
'***********************************************************
<KeyField("BuyOID", Kind:=KeyType.Guid)> Public Property BuyOID() As String
Get
Return m_strBuyOID
End Get
Set(ByVal Value As String)
m_strBuyOID = Value
End Set
End Property ....
#End Region
public DataBase(string tablename)
tablename 直接写 tableA left on tableB left on tableC 这样的形式
比如类名:TABLE1 数据库表明:TABLE1
属性对应。
在类中定义数据库主键。
然后通过反射。可以直接生成语句。
然后用实体类当参数。生成查询语句直接实现,INSERT , update , SELECT
复杂一点的SELECT 需要多定义一个查询参数类。生成语句的时候解析成SQL