东软软件动态生成对数据表更新操作的方法

  1  public string CreatUpdate()
  2         {
  3 
  4             StringPlus strclass = new StringPlus();
  5             StringPlus strclass1 = new StringPlus();
  6             StringPlus strclass2 = new StringPlus();
  7            //方法注释
  8             strclass.AppendSpaceLine(2, "/// <summary>");
  9             strclass.AppendSpaceLine(2, "/// " + Languagelist["summaryUpdate"].ToString());
 10             strclass.AppendSpaceLine(2, "/// </summary>");
 11             //构建方法指定方法形参为要更改的数据表对应的实体对象
 12             strclass.AppendSpaceLine(2, "public bool Update(" + ModelSpace + " model)");
 13             strclass.AppendSpaceLine(2, "{");
 14             //构建StringBuilder实例装在Sql语句
 15             strclass.AppendSpaceLine(3, "StringBuilder strSql=new StringBuilder();");
 16             strclass.AppendSpaceLine(3, "strSql.Append(\"update " + _tablename + " set \");");
 17             //表中所有列,获取列名、数据类型、长度、是否只增及是否为主键
 18             foreach (ColumnInfo field in Fieldlist)
 19             {
 20                 string columnName = field.ColumnName;
 21                 string columnType = field.TypeName;
 22                 string Length = field.Length;
 23                 bool IsIdentity = field.IsIdentity;
 24                 bool isPK = field.IsPrimaryKey;
 25 
 26                 strclass1.AppendSpaceLine(3, "db.AddInParameter(dbCommand, \"" + columnName + "\", DbType." + CSToProcType(columnType) + ", model." + columnName + ");");
 27 
 28                 if (field.IsIdentity || field.IsPrimaryKey || (Keys.Contains(field)))
 29                 {
 30                     continue;
 31                 }
 32                   // 构建赋值语句
 33                 strclass.AppendSpaceLine(3, "strSql.Append(\"" + columnName + "=" + preParameter + columnName + ",\");");
 34             }
 35 
 36 
 37             //去掉最后的逗号                     
 38             strclass.DelLastComma();
 39             strclass.AppendLine("\");");
 40             //构建Where条件
 41             strclass.AppendSpaceLine(3, "strSql.Append(\" where " + GetWhereExpression(Keys) + "\");");
 42 
 43              //创建命令对象
 44             strclass.AppendSpaceLine(3, "Database db = DatabaseFactory.CreateDatabase();");
 45             strclass.AppendSpaceLine(3, "DbCommand dbCommand = db.GetSqlStringCommand(strSql.ToString());");
 46 
 47 
 48             strclass.Append(strclass1.Value);
 49             //向数据库提交sql语句并返回执行结果
 50             strclass.AppendSpaceLine(3, "int rows=db.ExecuteNonQuery(dbCommand);\r\n");
 51             //判断结果并返回相应提示
 52             strclass.AppendSpaceLine(3, "if (rows > 0)");
 53             strclass.AppendSpaceLine(3, "{");
 54             strclass.AppendSpaceLine(4, "return true;");
 55             strclass.AppendSpaceLine(3, "}");
 56             strclass.AppendSpaceLine(3, "else");
 57             strclass.AppendSpaceLine(3, "{");
 58             strclass.AppendSpaceLine(4, "return false;");
 59             strclass.AppendSpaceLine(3, "}");
 60 
 61 
 62             strclass.AppendSpaceLine(2, "}");
 63             return strclass.ToString();
 64         }
动态生成数据表更新方法
主要就是通过获取表中的列来生成代码字符串之后再以流的形式写入文本!
posted @ 2016-04-10 15:53  王哲(真)  阅读(425)  评论(0编辑  收藏  举报