




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、获取数据库表名、库名、字段名的方法及Fields集合及OpenSchema方法使用技巧dadaV20160220获取字段名field对象又称字段对象,是recordset的子对象。通过field对象可以动态获得字段的相关信息。fields集合中的每一个元素都是一个field对象,一个field对象,对应的事recordset数据集合中的一个,也就是一个字段。通过ASP来看一个数据表的结果,要实现这样的功能,就要用到recordset对象的field集合。fields属性如下:Name:字段名value:字段值type:字段类型precision:字段允许最大字数变量=recordset.fie
2、lds.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.open"
3、;user",conn,1,1fori=0tors.fields.count-1response.write"第"&(i+1)&"个字段名是:"rs.fields(i).name&"<br>"next获取表名OpenSchema 方法可返回有关数据源的模式信息(比如:表的名称,表中的列名,每列的数据类型);OpenSchema 方法Recordset 将以只读、静态游标模式打开。例:<%Set rs=Conn.OpenSchema(20) Do Until rs.EOF If rs(
4、3)="TABLE" Thenresponse.write "表名:"&rs(2)&"<br />"End Ifrs.MoveNext Loop Rs.closeSet rs=Nothing'OpenSchema(20)方法将返回表的目录(TABLE_CATALOG)、模式(TABLE_SCHEMA)、表名(TABLE_NAME)、数据类型(TABLE_TYPE)的对象,并且由这些名称、表中的列名、每列的数据类型形成Recordset集合; 'rs(0)对应表的目录(TABLE_CATALO
5、G)值;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 对象中某一列的信
6、息。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 对象中的值所允许的小数位数。Original
7、Value返回某个字段的原始值。Precision设置或返回当表示 Field 对象中的数值时所允许的数字的最大数。Status返回 Field 对象的状态。Type设置或返回 Field 对象的类型。UnderlyingValue返回一个字段的当前值。Value设置或返回 Field 对象的值。Rs.Fields集合集合描述Fields指示在此 Recordset 对象中 Field 对象的数目。Fields 集合的属性属性描述Count返回 fields 集合中项目的数目。以 0 起始。例子:countfields = rs.Fields.CountItem(named_item/numb
8、er)返回 fields 集合中的某个指定的项目。例子:itemfields = rs.Fields.Item(1)或者itemfields = rs.Fields.Item("Name")ADO Connection 对象Connection 对象ADO Connection 对象用于创建一个到达某个数据源的开放连接。通过此连接,您可以对一个数据库进行访问和操作。如果需要多次访问某个数据库,您应当使用 Connection 对象来建立一个连接。您也可以经由一个 Command 或 Recordset 对象传递一个连接字符串来创建某个连接。不过,此类连接仅仅适合一次具体的简
9、单的查询。ProgIDset objConnection=Server.CreateObject("ADODB.connection")方法方法描述OpenSchema从 provider 返回有关数据源的 schema 信息。OpenSchema 方法定义和用法OpenSchema 方法可返回 Recordset 对象,该对象包含有关数据源的模式信息。举例,schema 信息可包括表的名称,表中的列名,每列的数据类型。Recordset 将以只读、静态游标模式打开。语法Set rs=objconn.OpenSchema(querytype,criteria,schemai
10、d)参数描述querytype必需。任意 SchemaEnum 值,表示要运行的模式查询的类型。注释:OLEDB 规范只要求三个 SchemaEnum 值得到支持:adSchemaTables, adSchemaColumns 以及 adSchemaProviderTypes。criteria可选。每个 QueryType 选项的查询约束的数组,如 SchemaEnum 中列出的内容。schemaidOLE DB 规范未定义的提供者模式查询的 GUID。如果 QueryType 被设置为 adSchemaProviderSpecific,则需要此参数。否则,将不使用它。Sc
11、hemaEnum值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 P
12、K_TABLE_SCHEMA PK_TABLE_NAMErs.close与Setrs=Nothing区别dadaV20160220rs.close'关闭Recordset(数据集);set rs=nothing'显式声明该变量为"无",期望占用的内存能回收(实际情况是常常无法回收);Set Rs=Nothing释放空间,清除该对象,对应的是setrs=CLOSE是关闭数据集。conn.close'关闭数据库连接;set conn=nothing'是释放对象, 释放占用内存。显式声明该变量为"无",期望占用的内存能回收(实际
13、情况跟上面一样糟!);Rs.Close之后还可以Rs.open但SetRs=Nothing之后就不可以Rs.open;Rs.Close关闭recordset,但是对象仍然存在,与他对应的是rs.open;如果只写Setrs=Nothing,不写rs.close;和先关闭再释放效果是一样的。只是尤如你有一个盒子,先盖上盖子再扔掉,与直接扔掉肯定是不一样的-.案例1:Asp获取数据库中表名、字段名、字段类型方法公司网站准备改版,要整理一下数据库中表的信息,以便改版中创建新表使用。问题是数据库中表太多,总不能一个字段名一个字段名去写,再去写字段类型,这太麻烦了。于是就想使用asp程序把数据库中表名、
14、字段名、字段类型一次读出来,然后自己把页面保存下来,然后再给每个字段加注释,这样就省下一堆时间。以下是我的asp代码,支持ACCESS和SQL Server两种数据库。<title>Asp获取数据库中表名、字段名、字段类型</title><style type="text/css">td font-size:12px; text-align:center; </style><%Function OpenConn() '连接数据库代码'On Error Resume NextsqlDatabaseIP =
15、"." '服务器IP,本机直接使用点sqlDatabaseName = "*" '数据库名sqlUserName = "*" '数据库账号sqlUserPass = "*" '密码strConn="Provider=SQLOLEDB;uid="&sqlUserName&"pwd="&sqlUserPass&"Server="&sqlDatabaseIP&"DATABA
16、SE="&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(
17、"网站访问繁忙,请稍候再访问") 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="&q
18、uot; 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
19、(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
20、 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&q
21、uot; 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'来源:dada
22、com'原创技术文章,转载请保留此信息,谢谢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)&"<br />"Set rs1=server.CreateObject("adodb.recordset")s
23、ql="select * from "&rs(2)&""Set rs1=conn.execute(sql)response.write "<table cellpadding=0 cellspacing=0 border=1 width=""500"" ><tr><td>字段名</td><td>字段类型</td><td>备注</td></tr>"For i=0 To rs1
24、.fields.count-1fieldname=rs1.fields(i).namefieldtype=rs1.fields(i).typeresponse.write "<tr><td>"&fieldname&"</td><td>"&AccessTypeName(fieldtype)&" </td><td> </td></tr>" 'Access数据库'
25、response.write "<tr><td>"&fieldname&"</td><td>"&SqlTypeName(fieldtype)&" </td><td> </td></tr>" 'sql数据库使用这句Nextresponse.write "</table><br><br>"End Ifrs.Move
26、Next Loop Set rs=NothingSet conn=nothing%>案例2ASP获取数据库表名,字段名以SQLServer为例:< % SET Conn=Server.CreateObject("ADODB.Connection") Conn.Open "Server=IP地址;Provider=sqloledb;Database=库名称;UID=用户名;PWD=密码;" %>读SqlServer库中的表名:< % Set rs=Conn.OpenSchema(20) While not rs.EOF Response.Write("所在数据库名:" & rs(0) & "<br>") Response.Write("所有者:" & rs(1) & "<br />") Response.Write("表 名:" & rs(2) & "<br />") Response.Write("表的类型:" &a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《原发性骨质疏松症》课件
- 《家畜解剖生理》课件
- 联动集团广告策划川美课件资料
- 《古代铜器》课件
- 《质量管理培训课件》讲义
- 走进社团世界
- 《宝马资讯》课件
- 共建和谐美好社会课件重现
- 《建筑工程监理法规》教学课件
- 《风险管理简介》课件
- 音乐课件-《渴望春天》
- 中医基础理论知识培训课件
- HIAC8000A颗粒度计数器操作中文说明书新
- 高铁接触网维修岗位培训教材
- 辽宁本溪国家地质公园环境保护自查报告
- 手卫生相关知识考核试题与答案
- 动静脉内瘘的穿刺与护理-PPT课件
- 浙江省交通投资集团有限公司高速公路涉路作业安全管理操作细则
- 塑胶产品成型周期公式及计算
- 弃货声明格式(共2页)
- 钣金件尺寸未注公差检验标准
评论
0/150
提交评论