首页 获取数据库表名、库名、字段名的方法及Fields集合及OpenSchema方法使用技巧

获取数据库表名、库名、字段名的方法及Fields集合及OpenSchema方法使用技巧

举报
开通vip

获取数据库表名、库名、字段名的方法及Fields集合及OpenSchema方法使用技巧可编辑可编辑------------------------------------------------------------------------------可编辑---------------------------------------获取数据库表名、库名、字段名的方法及Fields集合及OpenSchema方法使用技巧dadaV20160220获取字段名field对象又称字段对象,是recordset的子对象。通过field对象可以动态获得字段的相关信息。fields集合中的每一个元素都是一个fi...

获取数据库表名、库名、字段名的方法及Fields集合及OpenSchema方法使用技巧
可编辑可编辑------------------------------------------------------------------------------可编辑---------------------------------------获取数据库 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 名、库名、字段名的方法及Fields集合及OpenSchema方法使用技巧dadaV20160220获取字段名field对象又称字段对象,是recordset的子对象。通过field对象可以动态获得字段的相关信息。fields集合中的每一个元素都是一个field对象,一个field对象,对应的事recordset数据集合中的一个,也就是一个字段。通过ASP来看一个数据表的结果,要实现这样的功能,就要用到recordset对象的field集合。fields属性如下:Name:字段名value:字段值type:字段类型precision:字段允许最大字数变量=recordset.fields.count//获得集合中包含的field对象数目recordset.fields.refresh//重新获得fields数据集合中包含的field对象setfield=recordset.fields.item(index);注:index:0~count-1//得到一个field集合等效于:setfield=recordset.fields(index)例:rs.fields.count表示你建立的RecordSet对象字段数;rs.fields(i).name是指你建立的Rs记录表中第i个字段的名称(从0开始,i为1时指第2个字段名);应用:(假设rs已经建立):rs.open"user",conn,1,1fori=0tors.fields.count-1response.write"第"&(i+1)&"个字段名是:"rs.fields(i).name&"
"next获取表名OpenSchema方法可返回有关数据源的模式信息(比如:表的名称,表中的列名,每列的数据类型);OpenSchema方法Recordset将以只读、静态游标模式打开。可编辑可编辑------------------------------------------------------------------------------可编辑---------------------------------------例:<%Setrs=Conn.OpenSchema(20)DoUntilrs.EOFIfrs(3)="TABLE"Thenresponse.write"表名:"&rs(2)&"
"EndIfrs.MoveNextLoopRs.closeSetrs=Nothing'OpenSchema(20)方法将返回表的目录(TABLE_CATALOG)、模式(TABLE_SCHEMA)、表名(TABLE_NAME)、数据类型(TABLE_TYPE)的对象,并且由这些名称、表中的列名、每列的数据类型形成Recordset集合;'rs(0)对应表的目录(TABLE_CATALOG)值;rs(1)→模式(TABLE_SCHEMA);rs(2)→表名(TABLE_NAME);rs(3)→数据类型(TABLE_TYPE);恶补rs(0)与rs("字段名")含义!rs(0)是按SQL语句读出来的记录集的先后顺序命名的,rs(0)就是你select出来的第一个记录集。等价如下:Selectid,name,pwdfromtablers(0)=rs("id")rs(1)=rs("name")rs(2)=rs("pwd")Field对象ADOField对象包含有关Recordset对象中某一列的信息。Recordset中的每一列对应一个Field对象。ProgIDsetobjField=Server.CreateObject("ADODB.field")属性属性描述HYPERLINK"http://www.w3school.com.cn/ado/prop_field_size.asp"ActualSize返回一个字段值的实际长度。HYPERLINK"http://www.w3school.com.cn/ado/prop_field_attributes.asp"Attributes设置或返回Field对象的属性。HYPERLINK"http://www.w3school.com.cn/ado/prop_field_size.asp"DefinedSize返回Field对象被定义的大小HYPERLINK"http://www.w3school.com.cn/ado/prop_field_name.asp"Name设置或返回Field对象的名称。例:fields(i).name是指你建立的Rs记录表中第i个字段的名称(从0开始,i为1时指第2个字段名)HYPERLINK"http://www.w3school.com.cn/ado/prop_field_numericscale.asp"NumericScale设置或返回Field对象中的值所允许的小数位数。HYPERLINK"http://www.w3school.com.cn/ado/prop_field_originalvalue_underlyingvalue.asp"OriginalValue返回某个字段的原始值。可编辑可编辑------------------------------------------------------------------------------可编辑---------------------------------------HYPERLINK"http://www.w3school.com.cn/ado/prop_field_precision.asp"Precision设置或返回当表示Field对象中的数值时所允许的数字的最大数。HYPERLINK"http://www.w3school.com.cn/ado/prop_field_status.asp"Status返回Field对象的状态。HYPERLINK"http://www.w3school.com.cn/ado/prop_field_type.asp"Type设置或返回Field对象的类型。HYPERLINK"http://www.w3school.com.cn/ado/prop_field_originalvalue_underlyingvalue.asp"UnderlyingValue返回一个字段的当前值。HYPERLINK"http://www.w3school.com.cn/ado/prop_field_value.asp"Value设置或返回Field对象的值。Rs.Fields集合集合描述Fields指示在此Recordset对象中Field对象的数目。Fields集合的属性属性描述Count返回fields集合中项目的数目。以0起始。例子:countfields=rs.Fields.CountItem(named_item/number)返回fields集合中的某个指定的项目。例子:itemfields=rs.Fields.Item(1)或者itemfields=rs.Fields.Item("Name")ADOConnection对象Connection对象ADOConnection对象用于创建一个到达某个数据源的开放连接。通过此连接,您可以对一个数据库进行访问和操作。如果需要多次访问某个数据库,您应当使用Connection对象来建立一个连接。您也可以经由一个Command或Recordset对象传递一个连接字符串来创建某个连接。不过,此类连接仅仅适合一次具体的简单的查询。ProgIDsetobjConnection=Server.CreateObject("ADODB.connection")方法方法描述HYPERLINK"http://www.w3school.com.cn/ado/met_conn_openschema.asp"OpenSchema从provider返回有关数据源的schema信息。OpenSchema方法定义和用法可编辑可编辑------------------------------------------------------------------------------可编辑---------------------------------------OpenSchema方法可返回Recordset对象,该对象包含有关数据源的模式信息。举例,schema信息可包括表的名称,表中的列名,每列的数据类型。Recordset将以只读、静态游标模式打开。语法Setrs=objconn.OpenSchema(querytype,criteria,schemaid)参数描述querytype必需。任意 HYPERLINK"http://www.w3school.com.cn/ado/app_schemaenum.asp"SchemaEnum 值,表示要运行的模式查询的类型。注释:OLEDB 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 只要求三个SchemaEnum值得到支持:adSchemaTables,adSchemaColumns以及adSchemaProviderTypes。criteria可选。每个QueryType选项的查询约束的数组,如SchemaEnum中列出的内容。schemaidOLEDB规范未定义的提供者模式查询的GUID。如果QueryType被设置为adSchemaProviderSpecific,则需要此参数。否则,将不使用它。SchemaEnum值SchemaEnum值常量值描述约束列adSchemaTables20返回目录中定义的可存取的表(包括视图)。TABLE_CATALOGTABLE_SCHEMATABLE_NAMETABLE_TYPEadSchemaForeignKeys27返回给定用户在目录中定义的外键列。PK_TABLE_CATALOGPK_TABLE_SCHEMAPK_TABLE_NAMEFK_TABLE_CATALOGFK_TABLE_SCHEMAFK_TABLE_NAMEadSchemaPrimaryKeys28返回给定用户在目录中定义的主键列。PK_TABLE_CATALOGPK_TABLE_SCHEMAPK_TABLE_NAMErs.close与Setrs=Nothing区别dadaV20160220rs.close'关闭Recordset(数据集);setrs=nothing'显式声明该变量为"无",期望占用的内存能回收(实际情况是常常无法回收);SetRs=Nothing释放空间,清除该对象,对应的是setrs=CLOSE是关闭数据集。conn.close'关闭数据库连接;setconn=nothing'是释放对象,释放占用内存。显式声明该变量为"无",期望占用的内存能回收(实际情况跟上面一样糟!);可编辑可编辑------------------------------------------------------------------------------可编辑---------------------------------------Rs.Close之后还可以Rs.open但SetRs=Nothing之后就不可以Rs.open;Rs.Close关闭recordset,但是对象仍然存在,与他对应的是rs.open;如果只写Setrs=Nothing,不写rs.close;和先关闭再释放效果是一样的。只是尤如你有一个盒子,先盖上盖子再扔掉,与直接扔掉肯定是不一样的^-^.案例1:Asp获取数据库中表名、字段名、字段类型方法公司网站准备改版,要整理一下数据库中表的信息,以便改版中创建新表使用。问题是数据库中表太多,总不能一个字段名一个字段名去写,再去写字段类型,这太麻烦了。于是就想使用asp程序把数据库中表名、字段名、字段类型一次读出来,然后自己把页面保存下来,然后再给每个字段加注释,这样就省下一堆时间。以下是我的asp代码,支持ACCESS和SQLServer两种数据库。Asp获取数据库中表名、字段名、字段类型td{font-size:12px;text-align:center;}<%FunctionOpenConn()'连接数据库代码'OnErrorResumeNextsqlDatabaseIP="."'服务器IP,本机直接使用点sqlDatabaseName="***"'数据库名sqlUserName="**"'数据库账号sqlUserPass="***"'密码strConn="Provider=SQLOLEDB;uid="&sqlUserName&";pwd="&sqlUserPass&";Server="&sqlDatabaseIP&";DATABASE="&sqlDatabaseName&""'db="db1.mdb"'Access数据库名'path=server.MapPath(db)'strConn="provider=Microsoft.Jet.OLEDB.4.0;DataSource="&pathSetConn=server.CreateObject("ADODB.Connection")IfErrthenErr.clearResponse.Write("网站访问繁忙,请稍候再访问")Response.End()EndIfConn.OpenstrConnsetOpenConn=ConnEndFunctionSubCloseConn(Conn)'关闭数据库代码OnErrorResumeNextIfIsObject(Conn)thenConn.Close()可编辑可编辑------------------------------------------------------------------------------可编辑---------------------------------------SetConn=NothingEndIfIfErrThenErr.ClearEndSubFunctionAccessTypeName(num)'获取Access数据库的字段类型str=""SelectCasenumCase3str="自动编号/数字"Case6str="货币"Case7str="日期/时间"Case11str="是/否"Case202str="文本"Case203str="备注/超链接"Case205str="OLE对象"EndSelectAccessTypeName=strEndFunctionFunctionSqlTypeName(num)'这是获取sql数据库的字段类型str=""SelectCasenumCase2str="smallint"Case3str="int"Case4str="real"Case5str="float"Case6str="money/smallmoney"Case11str="bit"Case12str="sql_variant"Case17str="tinyint"可编辑可编辑------------------------------------------------------------------------------可编辑---------------------------------------Case20str="bigint"Case72str="uniqueidentifier"Case128str="binary/timestamp"Case129str="char"Case130str="nchar"Case131str="decimal/numeric"Case135str="datetime/smalldatetime"Case200str="varchar"Case201str="text"Case202str="nvarchar"Case203str="ntext"Case204str="varbinary"Case205str="image"EndSelectSqlTypeName=strEndFunction'功能:Asp获取数据库中表名、字段名、字段类型'作者:dada'来源:dadacom'原创技术文章,转载请保留此信息,谢谢setConn=openconn()setrs=server.CreateObject("adodb.recordset")Setrs=Conn.OpenSchema(20)DoUntilrs.EOFIfrs(3)="TABLE"Thenresponse.write"表名:"&rs(2)&"
"Setrs1=server.CreateObject("adodb.recordset")sql="select*from["&rs(2)&"]"Setrs1=conn.execute(sql)response.write"字段名字段类型备注"可编辑可编辑------------------------------------------------------------------------------可编辑---------------------------------------Fori=0Tors1.fields.count-1fieldname=rs1.fields(i).namefieldtype=rs1.fields(i).typeresponse.write""&fieldname&""&AccessTypeName(fieldtype)&"  "'Access数据库'response.write""&fieldname&""&SqlTypeName(fieldtype)&"  "'sql数据库使用这句Nextresponse.write"

"EndIfrs.MoveNextLoopSetrs=NothingSetconn=nothing%>案例2ASP获取数据库表名,字段名以SQLServer为例:<%SETConn=Server.CreateObject("ADODB.Connection")Conn.Open"Server=IP地址;Provider=sqloledb;Database=库名称;UID=用户名;PWD=密码;"%>读SqlServer库中的表名:<%Setrs=Conn.OpenSchema(20)Whilenotrs.EOFResponse.Write("所在数据库名:"&rs(0)&"
")Response.Write("所有者:"&rs(1)&"
")Response.Write("表名:"&rs(2)&"
")Response.Write("表的类型:"&rs(3)&"
")rs.MoveNextWend%>这样,我们知道表名了,现在我们再来看看怎么对表的字段进行操作。假设:其中数据库中有表:[Things],表中字段为:id,thingsName,thingsType获取该表的所有字段名:<%Dimi,j,SqlSetrs=Server.CreateObject(“ADODB.Recordset”)可编辑可编辑------------------------------------------------------------------------------可编辑---------------------------------------Sql="select*from[Things]where1<>1"rs.opensql,Conn,1,1j=rs.Fields.countFori=0to(j-1)Response.Write("第"&i+1&"个字段名:"&rs.Fields(i).Name&"

")Next%>好了,现在我们明白了怎么获取字段名了。如果大家想对获取的字段值进行一些操作,这也是可以的:比如我们想要删除表[Things]中字段thingsType,就可以这样写:<%Sql="ALTERTABLE[Things]DROPCOLUMNthingsType"Conn.executeSql%>又比如我们想要添加一个字段thingsCOLOR,它的类型为varchar型,长度为20,且默认值为Red,写法如下:<%Sql="ALTERTABLE[Things]ADDthingsCOLORVARCHAR(20)DEFAULT'Red'"Conn.executeSql%>以上对字段的基本操作都是用SQL语言实现,在ASP中,通过SQL语言,我们只要有足够的权限就可以完成更多的数据库操作,比如用CREATE建表,用DROP删除表等等。..
本文档为【获取数据库表名、库名、字段名的方法及Fields集合及OpenSchema方法使用技巧】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
机构认证用户
熊猫图文
公司专注课件、范文、教案设计制作等。用户至上,受到广大客户的一致好评,公司秉着用户至上的原则服务好每一位客户
格式:doc
大小:87KB
软件:Word
页数:9
分类:
上传时间:2021-10-29
浏览量:12