admin 管理员组文章数量: 887031
2023年12月22日发(作者:js特效网点使用方法)
.
获取数据库表名、库名、字段名的方法及Fields集合及OpenSchema方法
使用技巧
dadaV20160220
获取字段名
field对象又称字段对象,是recordset的子对象。通过field对象可以动态获得字段的相关信息。
fields集合中的每一个元素都是一个field对象,一个field对象,对应的事recordset数据集合中的一个,也就是一个字段。
通过ASP来看一个数据表的结果,要实现这样的功能,就要用到recordset对象的field集合。
fields属性如下:
Name:字段名
value:字段值
type:字段类型
precision:字段允许最大字数
变量=//获得集合中包含的field对象数目
h//重新获得fields数据集合中包含的field对象
set field=(index);注:index:0~count-1//得到一个field集合
等效于:setfield=(index)
例:
表示你建立的RecordSet对象字段数;
(i).name是指你建立的Rs记录表中第i个字段的名称(从0开始,i为1时指第2个字段名);
应用:(假设rs已经建立):
"user",conn,1,1
fori=-1
"第"&(i+1)&"个字段名是:"(i).name&"
"
next
获取表名
OpenSchema 方法可返回有关数据源的模式信息(比如:表的名称,表中的列名,每列的数据类型);OpenSchema 方法Recordset 将以只读、静态游标模式打开。
.
例:
<%
Set rs=hema(20)
Do Until
If rs(3)="TABLE" Then
"表名:"&rs(2)&"
"
End If
xt
Loop
Set rs=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出来的第一个记录集。等价如下:
Select id,name,pwdfromtable
rs(0)=rs("id")
rs(1)=rs("name")
rs(2)=rs("pwd")
Field 对象
ADO Field 对象包含有关 Recordset 对象中某一列的信息。Recordset 中的每一列对应一个 Field 对象。
ProgID
set objField=Object("")
属性
属性
ActualSize
Attributes
DefinedSize
Name
NumericScale
描述
返回一个字段值的实际长度。
设置或返回 Field 对象的属性。
返回Field 对象被定义的大小
设置或返回 Field 对象的名称。例:fields(i).name是指你建立的Rs记录表中第i个字段的名称(从0开始,i为1时指第2个字段名)
设置或返回 Field 对象中的值所允许的小数位数。
.
OriginalValue
Precision
Status
Type
UnderlyingValue
Value
返回某个字段的原始值。
设置或返回当表示 Field 对象中的数值时所允许的数字的最大数。
返回 Field 对象的状态。
设置或返回 Field 对象的类型。
返回一个字段的当前值。
设置或返回 Field 对象的值。
集合
集合
Fields
描述
指示在此 Recordset 对象中 Field 对象的数目。
Fields 集合的属性
属性
Count
描述
返回 fields 集合中项目的数目。以 0 起始。
例子:
countfields =
Item(named_item/number)
返回 fields 集合中的某个指定的项目。
例子:
itemfields = (1)
或者itemfields = ("Name")
ADO Connection 对象
Connection 对象
ADO Connection 对象用于创建一个到达某个数据源的开放连接。通过此连接,您可以对一个数据库进行访问和操作。
如果需要多次访问某个数据库,您应当使用 Connection 对象来建立一个连接。您也可以经由一个 Command 或
Recordset 对象传递一个连接字符串来创建某个连接。不过,此类连接仅仅适合一次具体的简单的查询。
ProgID
set objConnection=Object("tion")
方法
方法
OpenSchema
描述
从 provider 返回有关数据源的 schema 信息。
.
OpenSchema 方法
定义和用法
OpenSchema 方法可返回 Recordset 对象,该对象包含有关数据源的模式信息。举例,schema 信息可包括表的名称,表中的列名,每列的数据类型。Recordset 将以只读、静态游标模式打开。
语法
Set rs=hema(querytype,criteria,schemaid)
参数 描述
querytype 必需。任意 SchemaEnum 值,表示要运行的模式查询的类型。
注释:OLEDB 规范只要求三个 SchemaEnum 值得到支持:adSchemaTables,
adSchemaColumns 以及 adSchemaProviderTypes。
criteria 可选。每个 QueryType 选项的查询约束的数组,如 SchemaEnum 中列出的内容。
schemaid OLE DB 规范未定义的提供者模式查询的 GUID。如果 QueryType 被设置为
adSchemaProviderSpecific,则需要此参数。否则,将不使用它。
SchemaEnum值
SchemaEnum 值
常量
adSchemaTables
值 描述
20 返回目录中定义的可存取的表(包括视图)。
adSchemaForeignKeys 27 返回给定用户在目录中定义的外键列。
约束列
TABLE_CATALOG TABLE_SCHEMA
TABLE_NAME TABLE_TYPE
PK_TABLE_CATALOG PK_TABLE_SCHEMA
PK_TABLE_NAME FK_TABLE_CATALOG
FK_TABLE_SCHEMA FK_TABLE_NAME
adSchemaPrimaryKeys 28 返回给定用户在目PK_TABLE_CATALOG PK_TABLE_SCHEMA
录中定义的主键列。 PK_TABLE_NAME
与Setrs=Nothing区别
dadaV20160220
'关闭Recordset(数据集);
set rs=nothing'显式声明该变量为"无",期望占用的内存能回收(实际情况是常常无法回收);
Set Rs=Nothing释放空间,清除该对象,对应的是setrs=CLOSE是关闭数据集。
.
'关闭数据库连接;
set conn=nothing'是释放对象, 释放占用内存。显式声明该变量为"无",期望占用的内存能回收(实际情况跟上面一样糟!);
之后还可以但SetRs=Nothing之后就不可以;
关闭recordset,但是对象仍然存在,与他对应的是;
如果只写Setrs=Nothing,不写;和先关闭再释放效果是一样的。只是尤如你有一个盒子,先盖上盖子再扔掉,与直接扔掉肯定是不一样的^-^.
案例1:
Asp获取数据库中表名、字段名、字段类型方法
公司网站准备改版,要整理一下数据库中表的信息,以便改版中创建新表使用。问题是数据库中表太多,总不能一个字段名一个字段名去写,再去写字段类型,这太麻烦了。于是就想使用asp程序把数据库中表名、字段名、字段类型一次读出来,然后自己把页面保存下来,然后再给每个字段加注释,这样就省下一堆时间。以下是我的asp代码,支持ACCESS和SQL Server两种数据库。
<%
Function OpenConn() '连接数据库代码
'On Error Resume Next
sqlDatabaseIP = "." '服务器IP,本机直接使用点
sqlDatabaseName = "***" '数据库名
sqlUserName = "**" '数据库账号
sqlUserPass = "***" '密码
strConn="Provider=SQLOLEDB;uid="&sqlUserName&";pwd="&sqlUserPass&";Server="&sqlDatabaseIP&";DATABASE="&sqlDatabaseName&""
'db="" 'Access数据库名
' path=h(db)
' strConn = "provider=.4.0;Data Source=" & path
Set Conn = Object("tion")
If Err then
("网站访问繁忙,请稍候再访问")
()
End If
strConn
set OpenConn=Conn
End Function
.
Sub CloseConn(Conn) '关闭数据库代码
On Error Resume Next
If IsObject(Conn) then
()
Set Conn = Nothing
End If
If Err Then
End Sub
Function 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 Select
AccessTypeName=str
End Function
Function 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 Select
SqlTypeName=str
End Function
'功能:Asp获取数据库中表名、字段名、字段类型
'作者:dada
'来源:dadacom
'原创技术文章,转载请保留此信息,谢谢
set Conn=openconn()
set rs=Object("set")
Set rs=hema(20)
Do Until
If rs(3)="TABLE" Then
"表名:"&rs(2)&"
"
Set rs1=Object("set")
.
sql="select * from ["&rs(2)&"]"
Set rs1=e(sql)
"
字段名 | 字段类型 | 备注 |
"&fieldname&" | "&AccessTypeName(fieldtype)&" | |
"&fieldname&" | "&SqlTypeName(fieldtype)&" |
"
End If
xt
Loop
Set rs=Nothing
Set conn=nothing
%>
案例2
ASP获取数据库表名,字段名
以SQLServer为例:
< %
SET Conn=Object("tion")
"Server=IP地址;Provider=sqloledb;Database=库名称;UID=用户名;PWD=密码;"
%>
读SqlServer库中的表名:
< %
Set rs=hema(20)
While not
("所在数据库名:" & rs(0) & "
")
("所有者:" & rs(1) & "
")
("表 名:" & rs(2) & "
")
("表的类型:" & rs(3) & "
")
xt
Wend
%>
这样,我们知道表名了,现在我们再来看看怎么对表的字段进行操作。
假设:其中数据库中有表:[Things],表中字段为:id,thingsName,thingsType
.
获取该表的所有字段名:
< %
Dim i,j,Sql
Set rs=Object(“set”)
Sql="select * from [Things] where 1<>1"
sql,Conn,1,1
j=
For i=0 to (j-1)
("第" & i+1 & "个字段名:" & (i).Name & "
")
Next
%>
好了,现在我们明白了怎么获取字段名了。
如果大家想对获取的字段值进行一些操作,这也是可以的:
比如我们想要删除表[Things]中字段thingsType ,就可以这样写:
< %
Sql="ALTER TABLE [Things] DROP COLUMN thingsType"
e Sql
%>
又比如我们想要添加一个字段thingsCOLOR,它的类型为varchar型,长度为20,且默认值为Red,写法如下:
< %
Sql="ALTER TABLE [Things] ADD thingsCOLOR VARCHAR(20) DEFAULT 'Red'"
e Sql
%>
以上对字段的基本操作都是用SQL语言实现,在ASP中,通过SQL语言,我们只要有足够的权限就可以完成更多的数据库操作,比如用CREATE建表,用DROP删除表等等。
版权声明:本文标题:获取数据库表名,库名,字段名的方法及其Fields集合及其OpenSchema方法 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1703244653h443844.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论