激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

香港云服务器
服務器之家 - 編程語言 - ASP教程 - javascript asp教程More About Recordsets

javascript asp教程More About Recordsets

2019-10-22 10:19asp技術網 ASP教程

javascript asp教程More About Recordsets

Below we will attempt to access data from a database without knowing the column names. Clearly the best way to utilize data in your database is to keep track of your schema. Schema is the layout of data in your database. The concept is well beyond the scope of this web site, but it is worth mentioning. Most good resources on SQL will also be good resources on database management. Better database schema leads to better ASP code.

Get Started:

Below is the script for Lesson 18.

<%@LANGUAGE="JavaScript"%>
<!-- METADATA TYPE="typelib" 
FILE="C:Program FilesCommon FilesSystemdomsado15.dll" -->
<HTML>
<BODY>
<%
var myConnect = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="; 
myConnect += Server.MapPath("\")
myConnect += "\GlobalScripts\htmlColor.mdb;";

var ConnectObj = Server.CreateObject("ADODB.Connection");
var RS = Server.CreateObject("ADODB.Recordset");
var sql="SELECT * FROM colorChart;";

ConnectObj.Open (myConnect);
RS.Open(sql,ConnectObj,adOpenForwardOnly,adLockReadOnly,adCmdText);

var recordCount = RS.Fields.Count;
var x = 0;
var getFieldNames = false;

Response.Write("<TABLE BORDER="1" CELLSPACING="0">
");
while (!RS.EOF)
	{
	if (x >= recordCount)
		{
		x = 0
		}
	Response.Write("<TR>");
	if (!getFieldNames)
		{
		while (x <= recordCount-1)
			{
			Response.Write("<TH>" + RS.Fields(x).Name + "</TH>");
			x++;
			}
		getFieldNames = true;
		x = 0;
		Response.Write("</TR>
<TR>")
		}
	while (x <= recordCount-1)
		{
		Response.Write("<TD>" + RS.Fields(x).Value + "</TD>");
		x++;
		}
	Response.Write("</TR>
");
	RS.MoveNext();
	}
Response.Write("</TABLE>
");
RS.Close();
ConnectObj.Close();
RS = null;
ConnectObj = null;
%>
</BODY>
</HTML>

Click Here to run the script in a new window.

I don't think this needs much explaining. The RS.Fields.Count tells us how many columns wide the Recordset is. For each row, we loop through columns using either RS.Fields(x).Name for the colum name or RS.Fields(x).Value for the datum in said column.

Another Way:

A potentially more elegant way to accomplish this same goal is to use the ADO Method GetRows. It returns a multi-dimensional array containing the Recordset data. WAIT! Aren't JavaScript Arrays lexical (and flat)? Yes. We can emulate multi-dimensional arrays, but in reality they are flat. So it's a no-go on the GetRows... unless we do something really creative.

<%@LANGUAGE="JavaScript"%>
<!-- METADATA TYPE="typelib" 
FILE="C:Program FilesCommon FilesSystemdomsado15.dll" -->
<HTML>
<BODY>
<%
var myConnect = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="; 
myConnect += Server.MapPath("\")
myConnect += "\GlobalScripts\htmlColor.mdb;";

var ConnectObj = Server.CreateObject("ADODB.Connection");
var RS = Server.CreateObject("ADODB.Recordset");
var sql="SELECT * FROM colorChart;";
ConnectObj.Open (myConnect);
RS.Open(sql,ConnectObj,adOpenForwardOnly,adLockReadOnly,adCmdText);

var myArray = RS.GetRows().toArray();
Response.Write("Let's see the results of myArray as JavaScript");
Response.Write(" sees them (which is flat).<BR>
");
Response.Write(myArray + "<BR><BR>
")

RS.MoveFirst();
var myVBArray = new VBArray(RS.GetRows())
Response.Write("We can use the <I>new VBArray</I> constructor and the ")
Response.Write("<I>getItem( )</I> method. For example: myVBArray.getItem(1,1) ")
Response.Write("returns " + myVBArray.getItem(1,1) + "<BR><BR>
")

Response.Write("Now lets make something useful.<BR>
")
Response.Write("<TABLE BORDER=1 CELLPADDING=0 CELLSPACING=0>")
Response.Write("
<TR>")
for (var x=0; x<=myArray.length-1; x++)
	{
	Response.Write("<TD>" + myArray[x] + "</TD>")
	if ((x+1)%RS.Fields.Count==0)
		{
		Response.Write("</TR>
<TR>")
		}
	}
Response.Write("</TR>
")
Response.Write("</TABLE>")
RS.Close();
RS = null;
ConnectObj.Close();
ConnectObj = null;
%>
</BODY>
</HTML>

Click Here to run the script in a new window.

Notice when we use getRows( ) we don't get the column names (but that would be really easy to fix). The problem with myArray is that it's not very useful in its raw state. So we use a modulo operator and thanks to a little thing called RS.Fields.Count we can tell how many times we write data to the table before staring a new table row.

If you like the new VBArray constructor you should know that you have the following methods: dimensions() getItem() lbound() toArray() and ubound().

延伸 · 閱讀

精彩推薦
479
主站蜘蛛池模板: 一本一道久久久a久久久精品91 | 国产免费一区二区三区网站免费 | 国人精品视频在线观看 | 色播视频在线播放 | 亚洲一区二区免费 | 蜜桃传媒视频麻豆第一区免费观看 | 一区二区三区无码高清视频 | 久久欧美亚洲另类专区91大神 | 最新精品在线 | 在线无码 | 在线成人一区二区 | 欧美高清第一页 | 国产毛片毛片 | 99re久久最新地址获取 | 性日本xxx| 一区二区三区欧美在线观看 | 视频一区二区三区在线观看 | 激情小说激情图片激情电影 | 黄色大片大毛片 | a视频在线免费观看 | 国产精品999在线观看 | 国产三级国产精品国产普男人 | 调教小男生抽打尿孔嗯啊视频 | 91成人一区二区三区 | 国产精品久久久久免费视频 | 最新se94se在线欧美 | 久久精品久久精品久久精品 | 日产精品久久久一区二区开放时间 | 国产亚洲精品yxsp | 国产精品久久国产精麻豆96堂 | 美女黄色影院 | 国产a级片电影 | 一级性色| 羞羞视频免费视频欧美 | 国产无遮挡一级毛片 | 九色中文字幕 | 黄网站免费入口 | 久久人体 | 亚洲精品欧美二区三区中文字幕 | 国产中文99视频在线观看 | 一区二区三区四区在线观看视频 |