C# 自动创建数据库SQL语句解决方案

 在执行数据库Insert操作时,我们一般会使用2种方式来操作数据库;

1、手动编写SQL的Insert语句来插入数据库,这种方式可以更加灵活的创建语句,但是操作比较繁琐,如果数据过大可能或导致细节输入错误,导致数据库insert语句执行失败;

2、使用实体类的方式来执行,但是也得先将数据赋值给实体类才能进行数据库操作且实体类将要与数据库保持一样,负责会造成数据库语句执行失败的情况;

下面就是我的思路,自动将实体类的数据转为SQL语句且按照名称的方式来选择性插入数据;

public string GetInsertSql(T models)
            {
                //已实例化的实体用GetType,如果未实例化的我们需要使用typeof
                Type type = models.GetType();//new 过的对象
                                             //获取所有的字段
                PropertyInfo[] info = type.GetProperties();
                //这里是字段
                string field = "";
                //获取值
                string value = "";
                //遍历所有的字段对象
                for (int i = 0; i < info.Length; i++)
                {
                    //info[i].GetValue(models)获取某个字段的属性值
                    //有可能字段没有值,没有值的我们不添加
                    //info[i]是一个抽象类,存储着第几个字段的名称及类型等
                    if (info[i].GetValue(models) != null)
                    {
                        //if (!info[i].Name.Contains("Id"))
                            //获取字段和值
                            if ((i + 1) == info.Length)//代表最后一个循环不要,
                            {
                                //info[i].Name代表某个字段的名称
                                field += info[i].Name;
                                //因为GetValue的参数是object所以不需要用类型判断
                                string name = info[i].GetValue(models).ToString();
                                value += "'" + info[i].GetValue(models).ToString() + "'";
                            }
                            else
                            {
                                field += info[i].Name + ",";
                                value += "'" + info[i].GetValue(models).ToString() + "',";
                            }
                    }
                }
                //生成了sql语句
                string sql = "insert into " + type.Name + "(" + field + ") values(" + value + ")";
                return sql;
            }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值