基础--得到字段或列的数据类型原创
金蝶云社区-eris
eris
51人赞赏了该文章 188次浏览 未经作者许可,禁止转载编辑于2024年06月06日 17:04:13

1、单据主键类型,form.PkFieldType

2、实体主键类型,Entity.PkFieldType

3、字段类型, Field.FieldType

4、如果是列,没有对应的字段,可以通过得到表的结构得到

 DataTable schemaTable = null;
 string sql = string.Format("SELECT * FROM {0} WHERE 1=0", tableName);
 using (IDataReader rs = DBUtils.ExecuteReader(ctx, sql, null, CommandType.Text,CommandBehavior.SchemaOnly))
  {
        schemaTable = rs.GetSchemaTable();
  }
  var columnRows = schemaTable.Select("ColumnName = '" + columnName + "'");
  var columnType = (Type)schemaRows[0]["DataType"];
  if (columnType .Equals(typeof(string)))
  {
         var isString  = true;
  }
  else if(columnType .Equals(typeof(Int32)))
  {
        var isInt = true;
  }
  else if(columnType.Equals(typeof(Int64)))
  {
      var isInt64 = true;
  }

5、在使用4时,有时候需要先判断表名是否存在

  bool existsTable = false;
  SqlParam sqlPara = new SqlParam("@TABNAME", KDDbType.AnsiString, tableName.ToUpperInvariant());
  String strSQL = string.Format(" SELECT * FROM KSQL_USERTABLES WHERE KSQL_TABNAME = @TABNAME ");
   using (IDataReader rs = DBUtils.ExecuteReader(ctx, strSQL, sqlPara))
   {
                if (rs.Read())
                {
                    existsTable = true;
                }
    }


赞 51