代码改变世界

关于SQL语句的自动生成!(四)

2008-04-02 09:21  $等待$  阅读(237)  评论(0编辑  收藏  举报

各派生类的具体实现

      private class Insert : BaseClause
        
{
            
private string m_strName;
            
private string m_strValue;

            
public override void Add(string name, object val)
            
{
                
if (val == null)
                
{
                    
this.Add(name, "null"false);
                }

                
else
                
{
                    
this.Add(name, val.ToString(), val is string || val is DateTime);
                }

            }


            
private void Add(string name, string val, bool isref)
            
{
                
if (isref)
                
{
                    val 
= "'" + val + "'";
                }

                
if (this.m_strName == string.Empty)
                
{
                    
this.m_strName = "[" + name + "]";
                    
this.m_strValue = val;
                }

                
else
                
{
                    
this.m_strName += ",[" + name + "]";
                    
this.m_strValue += "," + val;
                }

            }


            
protected override string ToStr
            
{
                
get return "INSERT INTO [" + base.TableName + "] ( " + this.m_strName + " ) values ( " + this.m_strValue + " )"; }
            }


            
protected override void auxClear()
            
{
                
this.m_strValue = string.Empty;
                
this.m_strName = string.Empty;
            }

        }


        
private class Delete : BaseClause
        
{
            
public Delete()
            
{
            }


            
protected override string ToStr
            
{
                
get return "DELETE FROM [" + base.TableName + "]"; }
            }

        }


        
private class Update : BaseClause
        
{
            
private string m_strUpdate;

            
public override void Add(string name, object val)
            
{
                
if (val == null)
                
{
                    
this.Add(name, "null"false);
                }

                
else
                
{
                    
this.Add(name, val.ToString(), val is string || val is DateTime);
                }

            }


            
private void Add(string name, string val, bool isref)
            
{
                
if (isref)
                
{
                    val 
= "'" + val + "'";
                }

                
if (this.m_strUpdate == string.Empty)
                
{
                    
this.m_strUpdate = "[" + name + "]=" + val;
                }

                
else
                
{
                    
this.m_strUpdate += ",[" + name + "]=" + val;
                }

            }


            
protected override string ToStr
            
{
                
get return "UPDATE [" + base.TableName + "] SET " + this.m_strUpdate; }
            }


            
protected override void auxClear()
            
{
                
this.m_strUpdate = string.Empty;
            }

        }


        
private class Select : BaseClause
        
{
            
private string m_strSelect;

            
public override void Add(string name, object alis)
            
{
                
if (alis == null)
                
{
                    
this.Add(name, name, false);
                }

                
else
                
{
                    
this.Add(name, alis.ToString(), false);
                }

            }


            
private void Add(string name, string alis, bool isref)
            
{
                
if (this.m_strSelect == string.Empty)
                
{
                    
this.m_strSelect = "[" + name + "] as [" + alis + "]";
                }

                
else
                
{
                    
this.m_strSelect += ",[" + name + "] as [" + alis + "]";
                }

            }


            
protected override string ToStr
            
{
                
get
                
{
                    
if (this.m_strSelect == string.Empty)
                    
{
                        
this.m_strSelect = "*";
                    }

                    
return "SELECT " + this.m_strSelect + " FROM [" + base.TableName + "]";
                }

            }


            
protected override void auxClear()
            
{
                
this.m_strSelect = string.Empty;
            }

        }


        
private class Where
        
{
            
private string m_strWhere;

            
public Where()
            
{
                
this.Clear();
            }


            
public void Add(string name, object val)
            
{
                
if (val == null)
                
{
                    
this.Add(name, "null"false);
                }

                
else
                
{
                    
this.Add(name, val.ToString(), val is string || val is DateTime);
                }

            }


            
private void Add(string name, string val, bool isref)
            
{
                
if (isref)
                
{
                    val 
= "'" + val + "'";
                }

                
if (this.m_strWhere == string.Empty)
                
{
                    
this.m_strWhere = "[" + name + "]=" + val;
                }

                
else
                
{
                    
this.m_strWhere += " and [" + name + "]=" + val;
                }

            }


            
public override string ToString()
            
{
                
string strRet = string.Empty;
                
if (this.m_strWhere != string.Empty)
                
{
                    strRet 
= " Where " + this.m_strWhere;
                }

                
return strRet;
            }


            
public void Clear()
            
{
                
this.m_strWhere = string.Empty;
            }

        }