如何获得一个表的结构信息

2019-06-20 04:26:24 来源: 晋城信息港

  近项目中需要使用制作自定义查询功能,根据表的字段名称与条件建立不同的查询语句,这就需要知道如何通过把一个表的结构显示出来,并绑定到需要显示的控件上,其实已经提供了相应的函数来做到这一点,下面通过详细的代码实例来察看结果。

  由于本人通过使用Webservice来返回数据的结果,便制作了GetTableSchema(string sqlStr)函数,详细代码如下:

  /// summary

  /// 名称:GetTableSchema

  /// 参数:string sqlStr,前台查询语句

  /// 功能:获得表结构

  /// 返回值:DataSet

  /// /summary

  [WebMethod(EnableSession=true,Description = "获得表结构。")]

  public DataSet GetTableSchema(string sqlStr)

  {

  DataSet ds = new DataSet();

  OleDbCommand cmd = new OleDbCommand(sqlStr,conn);

  en();

  OleDbDataReader read = ecuteReader();

  DataTable tb = tSchemaTable();//注意这句话

  d(tb);

  ose();

  ose();

  return ds;

  }

  当建立好Webservice后,下面需要再前台把相应的表结构字段信息显示到一个

  DropDownList中。但是有一个问题要解决的是,我所要查询的表字段信息在建表的时候都采用了英文字段,如何把表的英文字段变为中文字段就需要一个临时的DataSet来转换一下,在临时的DataSet中建立一个临时表来存储字段的中文信息和英文信息的对照关系,通过遍理整个临时表信息来取出相对应的中文字段信息,并回显到前台WebCombo中(注:由于本项目的用户需求原因,我们采用WebCombo代替了开发者的DropDownList)。详细的代码如下:

  //CheckBoxList cbl = new CheckBoxList();

  //复选框显示方式为纵状,每列现实3条纪录

  peatColumns = 3;

  //peatDirection = Horizontal;

  //建立新的ListItem,存放试图表中的列值

  ListItem li = new ListItem();

  DataSet d = new DataSet();

  DataTable t = new DataTable("t");//建立表t

  DataColumn c = new DataColumn();

  taType = tType("ring");

  lumnName = "c";

  d(c);

  DataColumn c1 = new DataColumn();

  taType = tType("ring");

  lumnName = "c1";

  d(c1);

  DataColumn c2 = new DataColumn();

  taType = tType("ring");

  lumnName = "c2";

  d(c2);

  //r["c"]:列的英文名字r["c1"]:列的中文名字r["c2"]:列的类型

  DataRow r;

  //通过试图操作Webservice中的GetTableSchema函数来返回表的结构

  foreach(DataRow row in tTableSchema("select * from zc_view_kpb").Tables[0].Rows)

  {

  r = wRow();

  r["c"] = row["ColumnName"].ToString();

  string colname="";

  colname = row["ColumnName"].ToString();

  switch (colname)

  {

  case "KPID":

  r["c1"] = "卡片编号";

  break;

  case "ZJRQ":

  r["c1"] = "折旧日期";

  break;

  case "ZCMLID":

  r["c1"] = "资产目录编号";

  break;

  default:

  break;

  }

  //逐个添加列的名字到复选框中

  //cbl是一个CheckBoxList控件,显示表结构所有字段信息,意思是让用户可以选择不同的字段内容并自动生成DataGrid的列信息,供用户浏览,在此不必理会

  d(new ListItem(r["c1"].ToString(),colname));

  //在r["c2"]中存储的内容为字段的类型+英文名称

  r["c2"] = row["ProviderType"].ToString()+colname;

  d(r);

  }

  //生成表,并绑顶到下拉列表

  //Wcol为WebCombo控件名称

  d(t);

  taSource = d;

  taMember = bles["t"].ToString();

  taTextField = "c1";

  taValueField = "c2";

  taBind();

  到此,我们已经把表的字段信息绑定到了需要的控件上,如果要帮定到DropDownList是同样的道理,大家不妨试一下。

  查看本文来源

儿童便秘怎么办
儿童便秘怎么快速排便
防治小儿便秘的方法有哪些
本文标签: