通过泛型插入(更新)实体数据
/// <summary>/// 通过泛型插入数据/// </summary>/// <typeparam name="T">类名称</typeparam>/// <param name="obj">类对象,如果要插入空值,请使用@NULL</param>/// <returns>插入的新记录ID</returns>public static int Insert<T>(T obj){StringBuilder strSQL = new StringBuilder();strSQL = GetInsertSQL(obj);// 插入到数据库中object result = SQLPlus.ExecuteScalar(CommandType.Text, strSQL, null);return Convert.IsDBNull(result) ? 0 : Convert.ToInt32(result);}/// <summary>/// 通过泛型更新数据/// </summary>/// <typeparam name="T">类名称</typeparam>/// <param name="obj">类对象,如果要更新空值,请使用@NULL</param>/// <returns>更新结果,大于0为更新成功</returns>public static int Update<T>(T obj){StringBuilder strSQL = new StringBuilder();strSQL = GetUpdateSQL(obj);if (String.IsNullOrEmpty(strSQL.ToString())){return 0;}// 更新到数据库中object result = SQLPlus.ExecuteNonQuery(CommandType.Text, strSQL, null);int returnValue = Convert.IsDBNull(result) ? 0 : Convert.ToInt32(result);return returnValue;}/// <summary>/// 获取实体的插入语句/// </summary>/// <typeparam name="T">泛型</typeparam>/// <param name="obj">实体对象</param>/// <returns>返回插入语句</returns>public static StringBuilder GetInsertSQL<T>(T obj){string tableKey = GetPropertyValue(obj, BaseSet.PrimaryKey);string keyValue = GetPropertyValue(obj, tableKey);string tableName = GetPropertyValue(obj, BaseSet.TableName);Type t = obj.GetType();//获得该类的TypeStringBuilder strSQL = new StringBuilder();strSQL.Append("insert into " + tableName + "(");string fields = "";string values = "";//再用Type.GetProperties获得PropertyInfo[]foreach (PropertyInfo pi in t.GetProperties()){object name = pi.Name;//用pi.GetValue获得值// 替换Sql注入符string value1 = Convert.ToString(pi.GetValue(obj, null)).Replace("'", "''");//string dataType = pi.PropertyType.ToString().ToLower();string properName = name.ToString().ToLower();if (!string.IsNullOrEmpty(value1) && properName != tableKey.ToLower() && properName != BaseSet.PrimaryKey.ToLower() && properName != BaseSet.TableName.ToLower() && value1 != BaseSet.DateTimeLongNull && value1 != BaseSet.DateTimeShortNull){// 判断是否为空if (value1 == BaseSet.NULL){value1 = "";}fields += Convert.ToString(name) + ",";values += "'" + value1 + "',";}}// 去掉最后一个,fields = fields.TrimEnd(',');values = values.TrimEnd(',');// 拼接Sql串strSQL.Append(fields);strSQL.Append(") values (");strSQL.Append(values);strSQL.Append(")");strSQL.Append(";SELECT @@IDENTITY;");return strSQL;}/// <summary>/// 获取实体的更新SQL串/// </summary>/// <typeparam name="T">泛型</typeparam>/// <param name="obj">实体对象</param>/// <returns>返回插入语句</returns>private static StringBuilder GetUpdateSQL<T>(T obj){string tableKey = GetPropertyValue(obj, BaseSet.PrimaryKey);string keyValue = GetPropertyValue(obj, tableKey);string tableName = GetPropertyValue(obj, BaseSet.TableName);StringBuilder strSQL = new StringBuilder();if (string.IsNullOrEmpty(keyValue)){return strSQL;}Type t = obj.GetType();//获得该类的TypestrSQL.Append("update " + tableName + " set ");string subSQL = "";string condition = " where " + table补充:Web开发 , ASP.Net ,
上一个:.NET巩固之预编译指令
下一个:关于WCF数据契约和序列化的疑惑
- 更多asp疑问解答:
- asp正则过滤重复字符串的代码
- 用asp过滤全部html但保留br类似的符号
- 会asp,但感觉asp要过点,想学php。但我一般做的都是小公司的站,用access数
- PHP的空间可以用ASP的源代码吗?
- 以前做asp程序,现在应该怎样发展?是学.net还是php
- 以前做asp程序,现在应该怎样发展?是学.net还是php
- 想做一个市级的人才网acess,sql数据库,语言asp,jsp,php分别用哪种好
- jsp,asp,php 区别
- 我想找一个有比较多漏洞的网站的源码,比如可以asp,php注入等都可以。供学习研究用。请提供下载地址。。
- 现在候找人做个网站,用ASP,还是PHP语言去做好
- asp,php ,jsp,.net 对于做网站前台的重要吗?
- asp和php的区别是什么?
- 我是新手SEO菜鸟 请问wp dw php asp cms myspl dede 这些软件应该如何区分呀?
- 网页制作相关的三种语言:ASP JSP PHP那个好点,简单点?
- 网页制作相关的三种语言:ASP JSP PHP那个好点,简单点?