您当前的位置: 首页 > 网站编程 > ASP教程 > ASP中OpenSchema方法技术探讨

ASP中OpenSchema方法技术探讨

作者:guanchaofeng 来源:不详 发布时间: 2009-05-08 16:06 点击:
语法 setconnection=server.createobject(adodb.connection) Setrecordset=connection.OpenSchema(QueryType,Criteria,SchemaID) 返回值 返回包含模式信息的Recordset对象。Recordset将以只读、静态游标打开。 参数 QueryType所要运行的模式查询类型,可以为

ASP中OpenSchema方法技术探讨

  语法
  setconnection=server.createobject(“adodb.connection“)
  Setrecordset=connection.OpenSchema(QueryType,Criteria,SchemaID)
  
  返回值
  返回包含模式信息的Recordset对象。Recordset将以只读、静态游标打开。
  
  参数
  QueryType所要运行的模式查询类型,可以为下列任意常量。
  Criteria可选。每个QueryType选项的查询限制条件数组,
  
  参数枚举(QueryType)
  
  '----SchemaEnumValues----
  ConstadSchemaProviderSpecific=-1
  ConstadSchemaAsserts=0
  ConstadSchemaCatalogs=1
  ConstadSchemaCharacterSets=2
  ConstadSchemaCollations=3
  ConstadSchemaColumns=4
  ConstadSchemaCheckConstraints=5
  ConstadSchemaConstraintColumnUsage=6
  ConstadSchemaConstraintTableUsage=7
  ConstadSchemaKeyColumnUsage=8
  ConstadSchemaReferentialContraints=9
  ConstadSchemaTableConstraints=10
  ConstadSchemaColumnsDomainUsage=11
  ConstadSchemaIndexes=12
  ConstadSchemaColumnPrivileges=13
  ConstadSchemaTablePrivileges=14
  ConstadSchemaUsagePrivileges=15
  ConstadSchemaProcedures=16
  ConstadSchemaSchemata=17
  ConstadSchemaSQLLanguages=18
  ConstadSchemaStatistics=19
  ConstadSchemaTables=20
  ConstadSchemaTranslations=21
  ConstadSchemaProviderTypes=22
  ConstadSchemaViews=23
  ConstadSchemaViewColumnUsage=24
  ConstadSchemaViewTableUsage=25
  ConstadSchemaProcedureParameters=26
  ConstadSchemaForeignKeys=27
  ConstadSchemaPrimaryKeys=28
  ConstadSchemaProcedureColumns=29
  
  
  利用openschema可以获得所有表的主键,当然这只是它的很多功能中的一个。
  
  connstr="Provider=MSDAORA.1;UserID=liujincai;password=ljc1001;DataSource=hp1"
  setmm=server.CreateObject("adodb.connection")
  mm.Openconnstr
  ConstadSchemaPrimaryKeys=28
  setrs=mm.OpenSchema(adSchemaPrimaryKeys)
  Response.Write"<table>"
  Response.Write"<TR>"
  
  fori=0tors.fields.count-1
  Response.Write"<td>"&rs(i).name&"</td>"
  next
  Response.Write"</tr>"
  dowhilenotrs.eof
  Response.Write"<tr>"
  fori=0tors.fields.count-1
  Response.Write"<td>"&rs(i)&"</td>"
  next
  Response.Write"</tr>"
  rs.movenext
  loop
  Response.write“</table>“
  
  '下面的语句获得表'TB_HOUSE_MAIN'的主键所在的字段
  rs.Filter="TABLE_NAME='TB_HOUSE_MAIN'"
  ifnot(rs.eofandrs.bof)thenResponse.Writers("COLUMN_NAME")
  
  
  获得任意一个存储过程的参数列表,这个对于想做完全松耦合系统的哥们一定有用的。这个程序获得名字为'PRO_HOUSE_ADD_INFO'的存储过程的参数列表
  
  connstr="Provider=MSDAORA.1;UserID=liujincai;password=ljc1001;DataSource=hp1"
  setmm=server.CreateObject("adodb.connection")
  mm.Openconnstr
  ConstadSchemaProcedureParameters=26
  setrs=mm.OpenSchema(adSchemaProcedureParameters)rs.Filter="PROCEDURE_NAME='PRO_HOUSE_ADD_INFO'"Response.Write"<TABLEcellSpacing=0border=1>"
  Response.Write"<TBODY><TRbgColor=#dddddd>"
  fori=2tors.fields.count-1
  Response.Write"<TD>"&rs(i).name&"</TD>"
  next
  Response.Write"</TR>"
  dowhilenotrs.eof
  Response.Write"<TRbgColor=#e0d0c0>"
  fori=2tors.fields.count-1
  Response.Write"<TD>"&rs(i)&"</TD>"
  next
  Response.Write"</tr>"
  rs.movenext
  loop
  Response.Write"</table>"
  
  
  经过几个小时的实践探索,终于结束了对Adodb.connection的openschema方法的研究。现在总结一下:
  1,Setrecordset=connection.OpenSchema(QueryType,Criteria,SchemaID)
  里边一共有三个参数,但是一般就用第一个,后两个得确切功能,我也没有搞懂,这里也不做说明,有兴趣的自己查资料。
  
  2,这个的实现就是通过连接对象的openschema方法返回一个记录集。这样就可以遍历记录集来显示或者搜集感性趣的信息。
  
  3,利用它你还可以获得关于表,视图,列,索引,外键等信息。
  
  4,现在不能肯定的是,是否有些方式的模式查询受用户权限的限制。也就是如果没有足够的权限,是不能做某些类别的模式查询的(有待验证)
  
  5,这里有一些关于OpenSchema的资料连接,供查阅:
  http://www.lyu.edu.cn/home/yss/ado/mdmthopenschema.htm
  http://code365.com/html/asp/20040227/index/2004227113621.html
  
  在ASP中列出数据库中的表名和字段名的程序
  SetrstSchema=oConn.OpenSchema(adSchemaColumns)
  这是关键之处
  
  <%
  dsn="DSN=DSNName"
  ConstadSchemaTables=20
  adSchemaColumns=4
  SetoConn=Server.CreateObject("ADODB.Connection")
  
  oConn.opendsn
  SetrstSchema=oConn.OpenSchema(adSchemaColumns)
  response.write"<table>"
  response.write"<tr><td>Tablename</td><td>fieldname</td><td>fieldtype</td><td>isnullable</td><td>fieldsize</td></tr>"
  tablename=""
  DoUntilrstSchema.EOF
  response.write"<tr><td>"
  ifrstSchema("Table_name")<>tablenamethen
  response.writerstSchema("Table_name")
  tablename=rstSchema("Table_name")
  else
  response.write""
  endif
  response.write"</td><td>"&rstschema("column_Name")&"</td><td>"
  selectcaserstschema("data_type")
  case"130"
  ifrstschema("CHARACTER_MAXIMUM_LENGTH")=1073741823then
  response.write"Memo"
  else
  response.write"Text"
  endif
  case135
  response.write"Date/Time"
  case3
  response.write"LongInteger"
  case11
  response.write"Yes/No"
  case131
  response.write"Currency"
  caseelse
  response.writerstschema("data_type")
  endselect
  response.write"</td><td>"&rstschema("is_nullable")&"</td><td>"
  ifrstschema("CHARACTER_MAXIMUM_LENGTH")<>1073741823then
  response.writerstschema("CHARACTER_MAXIMUM_LENGTH")
  else
  response.write""
  endif
  response.write"</td></tr>"
  rstSchema.MoveNext
  Loop
  response.write"</table>"
  %>

分享到:
本文"ASP中OpenSchema方法技术探讨"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4