日期:2014-05-16  浏览次数:20463 次

javascript的数组获得数据库里的值,为何不能用呢??
<%@LANGUAGE= "JAVASCRIPT "   CODEPAGE= "936 "%>

<%
var   total=new   Array(6);
var   i=0,sum=0;

var   rs1=   Server.CreateObject( "ADODB.RecordSet ");
var   str   =   "Provider   =   Microsoft.Jet.OLEDB.4.0;Data   Source=   "+Server.MapPath( "tp.mdb ");
var   Conn=Server.CreateObject( "ADODB.Connection ");
Conn.Open(str);
var   sql= "select   *   from   tbltp ";
rs1.Open(sql,Conn,3,3);
while(!rs1.EOF){
sum=sum+rs1( "record ");
total[i]=rs1( "record ");
Response.Write(i)
Response.Write(total[i]+ " <br/> ");
i=i+1;
rs1.MoveNext;
}
Response.Write(i);
// Response.Write(total[0]);     //注释1

rs1.Close;

%>
<%=sum%>     //非注释1
// <%=totla[1]%>     //注释2
--------------------------
1,上面这段程序如果用“非注释1”则可以输出sum的值。
2,如果用“注释1”这个输出,则出现错误:
Error   Type:
ADODB.Field   (0x80020009)
Either   BOF   or   EOF   is   True,   or   the   current   record   has   been   deleted.   Requested   operation   requires   a   current   record.
3,如果用“注释2”这句,则出现错误:
Error   Type:
ADODB.Field   (0x80020009)
Object   is   no   longer   valid.
---------------
1,我的数据库中只有四条纪录,所以我在数组的声明中   Array(n)   的n   测试过用大一点的都不行。
2,我在while循环中试着打出   i   和   total   的各个值都是没有问题的,i   是从0到3的,而且total[0]   到   total[3]的值是我要的各条纪录的值。

但是为何total的数组到了while循环外就打不出来了呢?而sum值却没问题!!!

谢谢救命啊~~~!~!~!~!

------解决方案--------------------
total[i]=rs1( "record ")+ " ";

------解决方案--------------------
很简单...

rs1( "record ") 属于 对象...
对象都是按引用的...

在 rs1.Close; 后.
rs1 的所有东西就被你 null 了

之后再引用当然是空了...

原字串都是按值的, 比如 字串, 数字...

rs1( "record ")+ " " 是把对象转换为字串..