




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
获取数据库表名、库名、字段名的方法及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对象set field=recordset.fields.item(index);注:index:0count-1/得到一个field集合等效于:setfield=recordset.fields(index)例:rs.fields.count表示你建立的RecordSet对象字段数;rs.fields(i).name是指你建立的Rs记录表中第i个字段的名称(从0开始,i为1时指第2个字段名);应用:(假设rs已经建立):rs.openuser,conn,1,1fori=0tors.fields.count-1response.write第&(i+1)&个字段名是:rs.fields(i).name&next获取表名OpenSchema 方法可返回有关数据源的模式信息(比如:表的名称,表中的列名,每列的数据类型);OpenSchema 方法Recordset 将以只读、静态游标模式打开。例:%Set rs=Conn.OpenSchema(20) Do Until rs.EOF If rs(3)=TABLE Thenresponse.write 表名:&rs(2)&End Ifrs.MoveNext Loop Rs.closeSet rs=NothingOpenSchema(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出来的第一个记录集。等价如下:Select id,name,pwdfromtablers(0)=rs(id)rs(1)=rs(name)rs(2)=rs(pwd)Field 对象ADO Field 对象包含有关 Recordset 对象中某一列的信息。Recordset 中的每一列对应一个 Field 对象。ProgIDset objField=Server.CreateObject(ADODB.field)属性属性描述ActualSize返回一个字段值的实际长度。Attributes设置或返回 Field 对象的属性。DefinedSize返回Field 对象被定义的大小Name设置或返回 Field 对象的名称。例:fields(i).name是指你建立的Rs记录表中第i个字段的名称(从0开始,i为1时指第2个字段名)NumericScale设置或返回 Field 对象中的值所允许的小数位数。OriginalValue返回某个字段的原始值。Precision设置或返回当表示 Field 对象中的数值时所允许的数字的最大数。Status返回 Field 对象的状态。Type设置或返回 Field 对象的类型。UnderlyingValue返回一个字段的当前值。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)ADO Connection 对象Connection 对象ADO Connection 对象用于创建一个到达某个数据源的开放连接。通过此连接,您可以对一个数据库进行访问和操作。如果需要多次访问某个数据库,您应当使用 Connection 对象来建立一个连接。您也可以经由一个 Command 或 Recordset 对象传递一个连接字符串来创建某个连接。不过,此类连接仅仅适合一次具体的简单的查询。ProgIDset objConnection=Server.CreateObject(ADODB.connection)方法方法描述OpenSchema从 provider 返回有关数据源的 schema 信息。OpenSchema 方法定义和用法OpenSchema 方法可返回 Recordset 对象,该对象包含有关数据源的模式信息。举例,schema 信息可包括表的名称,表中的列名,每列的数据类型。Recordset 将以只读、静态游标模式打开。语法Set rs=objconn.OpenSchema(querytype,criteria,schemaid)参数描述querytype必需。任意SchemaEnum值,表示要运行的模式查询的类型。注释:OLEDB 规范只要求三个 SchemaEnum 值得到支持:adSchemaTables, adSchemaColumns 以及 adSchemaProviderTypes。criteria可选。每个 QueryType 选项的查询约束的数组,如 SchemaEnum 中列出的内容。schemaidOLE DB 规范未定义的提供者模式查询的 GUID。如果 QueryType 被设置为 adSchemaProviderSpecific,则需要此参数。否则,将不使用它。SchemaEnum值SchemaEnum 值常量值描述约束列adSchemaTables20返回目录中定义的可存取的表(包括视图)。TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPEadSchemaForeignKeys27返回给定用户在目录中定义的外键列。PK_TABLE_CATALOG PK_TABLE_SCHEMA PK_TABLE_NAME FK_TABLE_CATALOG FK_TABLE_SCHEMA FK_TABLE_NAMEadSchemaPrimaryKeys28返回给定用户在目录中定义的主键列。PK_TABLE_CATALOG PK_TABLE_SCHEMA PK_TABLE_NAMErs.close与Setrs=Nothing区别dadaV20160220rs.close关闭Recordset(数据集);set rs=nothing显式声明该变量为无,期望占用的内存能回收(实际情况是常常无法回收);Set Rs=Nothing释放空间,清除该对象,对应的是setrs=CLOSE是关闭数据集。conn.close关闭数据库连接;set conn=nothing是释放对象, 释放占用内存。显式声明该变量为无,期望占用的内存能回收(实际情况跟上面一样糟!);Rs.Close之后还可以Rs.open但SetRs=Nothing之后就不可以Rs.open;Rs.Close关闭recordset,但是对象仍然存在,与他对应的是rs.open;如果只写Setrs=Nothing,不写rs.close;和先关闭再释放效果是一样的。只是尤如你有一个盒子,先盖上盖子再扔掉,与直接扔掉肯定是不一样的-.案例1:Asp获取数据库中表名、字段名、字段类型方法公司网站准备改版,要整理一下数据库中表的信息,以便改版中创建新表使用。问题是数据库中表太多,总不能一个字段名一个字段名去写,再去写字段类型,这太麻烦了。于是就想使用asp程序把数据库中表名、字段名、字段类型一次读出来,然后自己把页面保存下来,然后再给每个字段加注释,这样就省下一堆时间。以下是我的asp代码,支持ACCESS和SQL Server两种数据库。Asp获取数据库中表名、字段名、字段类型td font-size:12px; text-align:center; %Function OpenConn() 连接数据库代码On Error Resume NextsqlDatabaseIP = . 服务器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;Data Source= & path Set Conn = server.CreateObject(ADODB.Connection)If Err then Err.clear Response.Write(网站访问繁忙,请稍候再访问) Response.End()End IfConn.Open strConnset OpenConn=ConnEnd FunctionSub CloseConn(Conn) 关闭数据库代码 On Error Resume Next If IsObject(Conn) then Conn.Close() Set Conn = Nothing End If If Err Then Err.ClearEnd SubFunction AccessTypeName(num) 获取Access数据库的字段类型 str= Select Case num Case 3 str = 自动编号/数字 Case 6 str = 货币 Case 7 str = 日期/时间 Case 11 str = 是/否 Case 202 str = 文本 Case 203 str = 备注/超链接 Case 205 str = OLE对象 End SelectAccessTypeName=strEnd FunctionFunction SqlTypeName(num) 这是获取sql数据库的字段类型str= Select Case num Case 2 str = smallint Case 3 str = int Case 4 str = real Case 5 str = float Case 6 str = money/smallmoney Case 11 str = bit Case 12 str = sql_variant Case 17 str = tinyint Case 20 str = bigint Case 72 str = uniqueidentifier Case 128 str = binary/timestamp Case 129 str = char Case 130 str = nchar Case 131 str = decimal/numeric Case 135 str = datetime/smalldatetime Case 200 str = varchar Case 201 str = text Case 202 str = nvarchar Case 203 str = ntext Case 204 str = varbinary Case 205 str = image End SelectSqlTypeName=strEnd Function功能:Asp获取数据库中表名、字段名、字段类型作者:dada来源:dadacom原创技术文章,转载请保留此信息,谢谢set Conn=openconn()set rs=server.CreateObject(adodb.recordset)Set rs=Conn.OpenSchema(20) Do Until rs.EOF If rs(3)=TABLE Thenresponse.write 表名:&rs(2)&Set rs1=server.CreateObject(adodb.recordset)sql=select * from &rs(2)&Set rs1=conn.execute(sql)response.write 字段名字段类型备注For i=0 To rs1.fields.count-1fieldname=rs1.fields(i).namefieldtype=rs1.fields(i).typeresponse.write &fieldname&AccessTypeName(fieldtype) Access数据库response.write &fieldname&SqlTypeName(fieldtype) sql数据库使用这句Nextresponse.write End Ifrs.MoveNext Loop Set rs=NothingSet conn=nothing%案例2ASP获取数据库表名,字段名以SQLServer为例:读SqlServer库中的表名: % Set rs=Conn.OpenSchema(20) While not rs.EOF Response.W
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电路和电流课件
- 大学高校保安服务投标方案
- 电脑课件VIP服务
- 数据管理平台技术服务方案
- 技改、修理类工程监理合同
- ps考试题目模拟试题及答案
- nike兼职考试及答案
- 电缆工程专业科普知识培训课件
- 江西省抚州市南城县2022-2023学年九年级上学期期中化学试题(含答案)
- 电玩城专业知识培训内容课件
- GB/T 35690-2017弱磁材料相对磁导率的测量方法
- 学会关心-教育的另一种模式课件
- JB∕T 13977-2020 液化天然气(LNG)低温潜液泵
- 药物的结构性质与生物活性
- 少年中国说五线谱乐谱
- 口咽通气道的使用方法
- 消防火灾自动报警主机更换(增加)施工方案
- 山西省太原市小升初语文试卷(含答案)
- 建筑结构及选型
- 质量管理统计工具(共102页).ppt
- (完整版)PHQ-9抑郁症筛查量表
评论
0/150
提交评论