StringBuilder strSql = new StringBuilder();
StringBuilder str1 = new StringBuilder(); //数据字段
StringBuilder str2 = new StringBuilder(); //数据参数
//利用反射获得属性的所有公共属性
PropertyInfo[] pros = model.GetType().GetProperties();
List < OleDbParameter > paras = new List < OleDbParameter > ();
strSql.Append("insert into " + databaseprefix + "manager(");
foreach(PropertyInfo pi in pros) {
//如果不是主键则追加sql字符串
if (!pi.Name.Equals("id")) {
//判断属性值是否为空
if (pi.GetValue(model, null) != null && !pi.GetValue(model, null).ToString().Equals("")) {
str1.Append("[" + pi.Name + "],"); //拼接字段
str2.Append("@" + pi.Name + ","); //声明参数
paras.Add(new OleDbParameter("@" + pi.Name, pi.GetValue(model, null))); //对参数赋值
}
}
}
strSql.Append(str1.ToString().Trim(','));
strSql.Append(") values (");
strSql.Append(str2.ToString().Trim(','));
strSql.Append(") ");
这个是我的代码 原本数据库是用的sqlserver的 后面需要改成access,sql是没问题但是OleDb反射时有的字段与access的字段不对应,比如access的日期类型是date,而反射得到的类型确是datetime类型,添加时提示字段类型不一致
有什么办法反射得到的字段属性与access的类型一致呢