public class TestModel { public int ID { get; set; } public string Name { get; set; } public string QQ { get; set; } public string Email { get; set; } }
public class TestDal { public void CreateSql<T>(T model) { Type type = typeof(T); string[] strSqlNames = type.GetProperties().Select(p => $"[{p.Name}]").ToArray(); //以下是不要ID这个字段的 比如自增列ID 就不能像上名那样写 //string[] strSqlNames = type.GetProperties().Where(p => !p.Name.Equals("Id")).Select(p => $"[{p.Name}]").ToArray(); string strSqlName = string.Join(",", strSqlNames); string[] strSqlValues = type.GetProperties().Select(P => $"@{P.Name}").ToArray(); string strSqlValue = string.Join(",", strSqlValues); // strSql得到的 sql语句为insert into testModel ( [ID],[Name],[QQ],[Email] ) values (@ID,@Name,@QQ,@Email) string strSql = "insert into testModel ( " + strSqlName + " ) values (" + strSqlValue + ")"; //para Sql是参数 SqlParameter[] para = type.GetProperties().Select(p => new SqlParameter($"@{p.Name}", p.GetValue(model, null))).ToArray(); } }
//这主方法的调用 private void button1_Click(object sender, EventArgs e) { TestDal dal = new TestDal(); TestModel model = new TestModel() { ID = 10001, Name = "罗分明", QQ = "78630559", Email = "78630559@qq.com" }; dal.CreateSql(model); }