Пример #1
0
 /// <summary>
 /// 拼接为Table添加列的sql
 /// </summary>
 /// <param name="commandText">待拼接的sql</param>
 public void Build(StringBuilder commandText)
 {
     //遍历所有的Column节点
     foreach (ColumnNode columnNode in _columnNodes)
     {
         //拼接表名
         this.AppendAlterTable(commandText, _tableName, _schemaName);
         //拼接列名
         this.AppendAddColumn(commandText, columnNode.ColumnName);
         //拼接数据类型
         commandText.AppendFormat(" {0}", _columnNodeHelper.GetSqlType(columnNode.DataType));
         //拼接数据类型长度
         if (columnNode.Length != null && columnNode.Decimals != null)
         {
             commandText.AppendFormat("({0}, {1})", columnNode.Length, columnNode.Decimals);
         }
         else if (columnNode.Length != null)
         {
             commandText.AppendFormat("({0})", columnNode.Length);
         }
         //拼接默认值
         if (columnNode.IsDefault)
         {
             string defaultValue = _columnNodeHelper.GetDefaultValue(columnNode.DataType);
             if (!string.IsNullOrEmpty(defaultValue))
             {
                 commandText.AppendFormat(" DEFAULT {0}", defaultValue);
             }
         }
         //拼接换行
         commandText.AppendLine();
     }
 }
Пример #2
0
 /// <summary>
 /// 拼接列
 /// </summary>
 /// <param name="commandText">待拼接的sql</param>
 /// <param name="columnNode">列</param>
 protected virtual void AppendColumn(StringBuilder commandText, IColumnNode columnNode)
 {
     //拼接列名
     this.AppendColumnName(commandText, columnNode.ColumnName);
     //拼接数据类型
     commandText.AppendFormat("\t{0}", _columnNodeHelper.GetSqlType(columnNode.DataType));
     //拼接数据类型长度及小数点位数
     if (columnNode.Length != null && columnNode.Decimals != null)
     {
         commandText.AppendFormat("({0}, {1})", columnNode.Length, columnNode.Decimals);
     }
     else if (columnNode.Length != null)
     {
         commandText.AppendFormat("({0})", columnNode.Length);
     }
     //拼接默认值
     if (columnNode.IsDefault)
     {
         string defaultValue = _columnNodeHelper.GetDefaultValue(columnNode.DataType);
         if (!string.IsNullOrEmpty(defaultValue))
         {
             commandText.AppendFormat("\tDEFAULT {0}", defaultValue);
         }
     }
     //拼接主键
     if (columnNode.IsPrimary)
     {
         commandText.Append("\tPRIMARY KEY");
     }
     //拼接自增列
     if (columnNode.IsIdentity)
     {
         commandText.AppendFormat("\t{0}", _columnNodeHelper.GetIdentity());
     }
     //拼接是否为空(非主键列才可以定义NULL 或 NOT NULL)
     if (!columnNode.IsPrimary)
     {
         commandText.AppendFormat("\t{0}", columnNode.IsNull ? "NULL" : "NOT NULL");
     }
 }