拼接sql语句

     很早以前的一个方法,对于一些比较简单的小项目经常使用,自己在这里有进行了下完善和修改,感觉这个方法不错,不用写那些烦人的Insert和Update语句,尤其是字段特别多的时候,写起来很费时,可以省写很多代码,发出来大家看看,有什么不好的地方请各位大虾们指教。
     假如我们要对表Users表进行新增和编辑
     首先定义一个实体User实体类:
/**/ /// <summary>
    
/// 实体类Users
    
/// </summary>

     public   class  Users
    
{
        
public Users()
        
{ }

        
private int _id;
        
private string _username;
        
private int _usercode;
        
private string _sex;
        
private int _age;

        
/**//// <summary>
        
/// 系统ID,默认自增
        
/// </summary>

        public int ID
        
{
            
set { _id = value; }
            
get return _id; }
        }

        
/**//// <summary>
        
/// 用户名
        
/// </summary>

        public string UserName
        
{
            
set { _username = value; }
            
get return _username; }
        }

        
/**//// <summary>
        
/// 用户编号
        
/// </summary>

        public int UserCode
        
{
            
set { _usercode = value; }
            
get return _usercode; }
        }

        
/**//// <summary>
        
/// 性别
        
/// </summary>

        public string Sex
        
{
            
set { _sex = value; }
            
get return _sex; }
        }

        
/**//// <summary>
        
/// 年龄
        
/// </summary>

        public int Age
        
{
            
set { _age = value; }
            
get return _age; }
        }

    }

    存储sql语句字段名、字段值和字段类型的类:
public   class  SqlText
    
{
        
private string _ColumnName;
        
private string _ColumnValue;
        
private string _ColumnType;

        
public static string strType = "String";
        
public static string intType = "Int";


        
public SqlText(string ColumnName, string ColumnValue, string ColumnType)
        
{
            
this._ColumnName = ColumnName;
            
this._ColumnValue = ColumnValue;
            
this._ColumnType = ColumnType;
        }


        
public string ColumnName
        
{
            
get
            
{
                
return _ColumnName;
            }

        }


        
public string ColumnValue
        
{
            
get
            
{
                
return _ColumnValue;
            }

        }


        
public string ColumnType
        
{
            
get
            
{
                
return _ColumnType;
            }

        }

    }

    生成sql语句的类:
public   class  CreateSql
    
{
        
/**//// <summary>
        
/// 插入sql语句
        
/// </summary>
        
/// <param name="list">存放数据对象</param>
        
/// <param name="TableName">插入表名称</param>

        public static void Insert(List<SqlText> list, string TableName)
        
{
            
string sql = CreateInsert(list, TableName);
        }

        
        
/**//// <summary>
        
/// 修改sql语句
        
/// </summary>
        
/// <param name="list">存放数据对象</param>
        
/// <param name="TableName">插入表名称</param>
        
/// <param name="strWhere">输入条件,例如:ID=1</param>

        public static void Update(List<SqlText> list, string TableName, string strWhere)
        
{
            
string sql = CreateUpdate(list, TableName, strWhere);
        }


        
public static string CreateInsert(List<SqlText> list, string TableName)
        
{
            StringBuilder sb 
= new StringBuilder();
            StringBuilder sbStart 
= new StringBuilder();
            StringBuilder sbEnd 
= new StringBuilder();
            sbStart.Append(
"INSERT INTO " + TableName + " (");
            sbEnd.Append(
" VALUES (");
            
for (int i = 0; i < list.Count; i++)
            
{
                
if (i == 0)
                
{
                    sbStart.Append(list[i].ColumnName);
                    
if (list[i].ColumnType == SqlText.strType)
                    
{
                        sbEnd.Append(
"'" + list[i].ColumnValue + "'");
                    }

                    
else
                    
{
                        sbEnd.Append(list[i].ColumnValue);
                    }

                }

                
else
                
{
                    sbStart.Append(
"," + list[i].ColumnName);
                    
if (list[i].ColumnType == SqlText.strType)
                    
{
                        sbEnd.Append(
",'" + list[i].ColumnValue + "'");
                    }

                    
else
                    
{
                        sbEnd.Append(
"," + list[i].ColumnValue);
                    }

                }

            }

            sbStart.Append(
")");
            sbEnd.Append(
")");

            sb.Append(sbStart.ToString() 
+ sbEnd.ToString());
            
return sb.ToString();
        }


        
public static string CreateUpdate(List<SqlText> list, string TableName, string strWhere)
        
{
            StringBuilder sb 
= new StringBuilder();
            sb.Append(
"UPDATE " + TableName + " SET ");
            
for (int i = 0; i < list.Count; i++)
            
{
                
if (i == 0)
                
{
                    sb.Append(list[i].ColumnName 
+ " = ");
                }

                
else
                
{
                    sb.Append(
"," + list[i].ColumnName + " = ");
                }

                
if (list[i].ColumnType == SqlText.strType)
                
{
                    sb.Append(
"'" + list[i].ColumnValue + "'");
                }

                
else
                
{
                    sb.Append(list[i].ColumnValue);
                }

            }

            sb.Append(
" WHERE " + strWhere);
            
return sb.ToString();
        }

    }

    具体实现方法:
class  Program
    
{
        
static void Main(string[] args)
        
{
            
//如果是新增一位人员信息
            string type = "ADD";
            
//如果是编辑一位人员信息
            
//string type = "ADD";

            Users user 
= new Users();
            user.UserName 
= "OR";
            user.UserCode 
= 1;
            user.Sex 
= "";
            user.Age 
= 24;

            List
<SqlText> list = new List<SqlText>();
            list.Add(
new SqlText("UserName", user.UserName.ToString(), SqlText.strType));
            list.Add(
new SqlText("UserCode", user.UserCode.ToString(), SqlText.intType));
            list.Add(
new SqlText("Sex", user.Sex.ToString(), SqlText.strType));
            list.Add(
new SqlText("Age", user.Age.ToString(), SqlText.intType));
            
try
            
{
                
if (type == "ADD")   //新增
                {
                    CreateSql.Insert(list, 
"Users");
                    list.Clear();
                }

                
else if (type == "EDIT")  //修改
                {
                    CreateSql.Update(list, 
"Users""ID=" + type);
                    list.Clear();
                }

            }

            
catch
            
{
                
throw;
            }

        }

    }





转载于:https://www.cnblogs.com/lc329857895/archive/2008/03/06/1093624.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值