工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 6088|回复: 20

js可以操作数据库吗?(asp 抽奖 数据库 实例)

[复制链接]
发表于 2007-5-15 00:34 | 显示全部楼层 |阅读模式
上次做一个asp页面的时候,网友告诉我js不能操作数据库
后来又听人说js也可以操作数据库
刚好我这次给科室做一个摇奖的页面
百度一下找了一个半现成的
不过全是js
没涉及到数据库查询
后来我们领导看了说太简单了
要求:1要分段显示,也就是第一个是一等奖,接下来几个是二等奖,后面几个是三等奖,最后几个是三等奖...(这个功能基本上实现了)
2不单要显示抽奖号码,而且要根据抽奖号码显示其对应的人名,联系方式...也就是要查询数据库啦(数据库已有),vbscirpt查询数据库我用过,js怎么查询数据库,一样吗?如果不行,要怎么处理,js中调用vbscirpt???

[ 本帖最后由 2002070344 于 2007-5-21 00:03 编辑 ]
 楼主| 发表于 2007-5-15 00:39 | 显示全部楼层
原来代码为

[quote]<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" C>
<META NAME="Author" C>
<META NAME="Keywords" C>
<META NAME="Description" C>
<style>
* {
font-size:10.2pt;
font-family:verdana;
}
</style>
</HEAD>

<BODY>
<table width="80%" border="0" cellpadding="20" cellspacing="0" align="center">
  <tr>
    <td align="center" valign="middle"><button id='cmd_execute'>start roll award</button></td>
  </tr>
  <tr>
    <td align="center" valign="middle"><div id='randmizenum' style='width:100px;border:2px solid blue;font-size:20px;'></div></td>
  </tr>
  <tr>
    <td align="center" valign="middle"><div id='awardnumber'></div></td>
  </tr>
  <tr>
    <td align="center" valign="middle" align='center'>Power By Bluedestiny</td>
  </tr>
</table>
<SCRIPT LANGUAGE="JavaScript">
<!--
function $(obj) {return document.getElementById(obj);}
function rollaward() {var awardnum};

rollaward.prototype.total=1000;
rollaward.prototype.rollspeed=10;
rollaward.prototype.count=0;
rollaward.prototype.awardArray=new Array();

rollaward.initialize=function() {
for(var i=0;i<rollaward.prototype.total;i++)
rollaward.prototype.awardArray[i]=i+1;
$('randmizenum').innerHTML+='00000';
}
rollaward.start=function() {
if(rollaward.prototype.total==0)
{
alert('has finished');
clearInterval(interval);
return;
}
rollaward.awardnum=parseInt(Math.random()*(rollaward.prototype.total));
$('randmizenum').innerHTML=rollaward.prototype.awardArray[rollaward.awardnum];
$('cmd_execute').value='stop roll award';
}
rollaward.stop=function() {
clearInterval(interval);
rollaward.prototype.count++;
$('awardnumber').innerHTML+='第 ' + rollaward.prototype.count + ' 位中奖者:' +rollaward.prototype.awardArray[rollaward.awardnum]+'<br/>';
$('cmd_execute').value='start roll award';

for(var i=rollaward.awardnum;i<rollaward.prototype.total;i++)
rollaward.prototype.awardArray[i]=rollaward.prototype.awardArray[i+1];
rollaward.prototype.total--;
rollaward.prototype.awardArray.length--;
}
function _click(){event.srcElement.value=='start roll award'?interval=setInterval(rollaward.start,rollaward.prototype.rollspeed):rollaward.stop();}
rollaward.initialize();
$('cmd_execute').attachEvent('onclick',_click);
//-->
</SCRIPT>
</BODY>

</HTML>
[/quote]



我主要修改了rollaward.stop函数

修改后为:

[quote]<%@language="VBSCRIPT" CODEPAGE="936"%>
<HTML>
<HEAD>
<TITLE>6.5环境日有奖征答摇奖仪式</TITLE>
<META NAME="Generator" C>
<META NAME="Author" C>
<META NAME="Keywords" C>
<META NAME="Description" C>
<style>
* {
font-size:10.2pt;
font-family:verdana;
}
.STYLE1 {
font-size: large;
font-weight: bold;
}
</style>
</HEAD>
<BODY><table width="100%" border="0">
  <tr>
    <td height="80"><div align="center" class="STYLE1">6.5环境日有奖征答摇奖仪式</div></td>
  </tr>
</table>
<table width="80%" border="0" cellpadding="20" cellspacing="0" align="center">
  <tr>
    <td align="center" valign="middle"><button id='cmd_execute'>开始摇奖</button></td>
  </tr>
  <tr>
    <td align="center" valign="middle"><div id='randmizenum' style='width:100px;border:2px solid blue;font-size:20px;'></div></td>
  </tr>
  <tr>
    <td align="center" valign="middle"><div id='awardnumber'></div></td>
  </tr>
  <tr>
    <td align="center" valign="middle" align='center'>edited By 惠州环境信息中心</td>
  </tr>
</table>
<SCRIPT LANGUAGE="JavaScript">
<!--
function $(obj) {return document.getElementById(obj);}
function rollaward() {var awardnum};
rollaward.prototype.total=100;
rollaward.prototype.rollspeed=10;
rollaward.prototype.count=0;
rollaward.prototype.awardArray=new Array();
rollaward.initialize=function() {
for(var i=0;i<rollaward.prototype.total;i++)
rollaward.prototype.awardArray[i]=i+1;
$('randmizenum').innerHTML+='00000';
}
rollaward.start=function() {
if(rollaward.prototype.total==0)
{
alert('has finished');
clearInterval(interval);
return;
}
rollaward.awardnum=parseInt(Math.random()*(rollaward.prototype.total));
$('randmizenum').innerHTML=rollaward.prototype.awardArray[rollaward.awardnum];
$('cmd_execute').value='停止摇奖';
}

function _click(){event.srcElement.value=='开始摇奖'?interval=setInterval(rollaward.start,rollaward.prototype.rollspeed):rollaward.stop();}
rollaward.initialize();
$('cmd_execute').attachEvent('onclick',_click);
//-->
[color=red]</SCRIPT>[/color]
[color=red]<SCRIPT LANGUAGE="JavaScript">
rollaward.stop=function()
{
clearInterval(interval);
rollaward.prototype.count++;[/color]
[color=red]if(rollaward.prototype.count<2)
$('awardnumber').innerHTML+='一等奖幸运号:' +rollaward.prototype.awardArray[rollaward.awardnum]+'<br/>';
   else
        if(rollaward.prototype.count<5)
        $('awardnumber').innerHTML+='二等奖幸运号:' +rollaward.prototype.awardArray[rollaward.awardnum]+'<br/>';
      else
        if(rollaward.prototype.count<7)
      $('awardnumber').innerHTML+='三等奖幸运号:' +rollaward.prototype.awardArray[rollaward.awardnum]+'<br/>';
       else
            if(rollaward.prototype.count>=7)
       alert('抽奖已顺利完成!')
$('cmd_execute').value='开始摇奖';[/color]
[color=red]for(var i=rollaward.awardnum;i<rollaward.prototype.total;i++)
rollaward.prototype.awardArray[i]=rollaward.prototype.awardArray[i+1];
rollaward.prototype.total--;
rollaward.prototype.awardArray.length--;
}
</SCRIPT>[/color]
</BODY>
</HTML>
[/quote]


不知道这样写合适不,不过测试还是满足要求1的[/i][/i][/i][/i]

[[i] 本帖最后由 2002070344 于 2007-5-15 01:32 编辑 [/i]]
回复

使用道具 举报

 楼主| 发表于 2007-5-15 00:40 | 显示全部楼层
继续百度看看有没解决方法
知道的同学,麻烦提个醒,指点一下
回复

使用道具 举报

发表于 2007-5-15 01:29 | 显示全部楼层
你所说的 VBScript 访问数据库应该是  runat=server 的吧

好像这是在ASP里用的

据我所知,js不能访问数据库的


PS:发的帖里如有代码,最好禁了  Discuz!代码 以免有 [i] 时出现斜体


JS可以和服务器交互,具体可以搜下 AJAX 

不用动态语言直接和数据库联系,还真没见过..

PS:发的帖里如有代码,最好禁了  Discuz!代码 以免有 [i] 时出现斜体
回复

使用道具 举报

发表于 2007-5-15 01:31 | 显示全部楼层
刚刚搜了下 JS访问数据
貌似访问的是本地的数据库,而不是服务器的数据库
回复

使用道具 举报

 楼主| 发表于 2007-5-15 01:33 | 显示全部楼层
应该算本地数据库吧
我把数据库拷到该asp同个目录下
回复

使用道具 举报

 楼主| 发表于 2007-5-15 01:43 | 显示全部楼层
网上抄了段js查询数据库的,凑在一起有点不伦不类的
运行也失败
明天上班有空再看看
回复

使用道具 举报

发表于 2007-5-15 01:46 | 显示全部楼层

  1. function WriteDB()
  2. {
  3. var i = 0;
  4. var con = new ActiveXObject("ADODB.Connection");
  5. var sql = "insert into board (bname, standard, diffcount) values ('dd', 0, 0)";

  6. con.Provider = "Microsoft.Jet.OLEDB.4.0";
  7. con.ConnectionString = "Data Source=E:\\DB\\VITest.mdb";

  8. con.open();
  9. var rs = new ActiveXObject("ADODB.Recordset");
  10. rs.open(sql, con); //这块代码有问题,本应rs.close();rs = null;可是添加上报错

  11. //rs.close();
  12. //rs = null;

  13. con.close();
  14. con = null;
  15. }

复制代码
回复

使用道具 举报

发表于 2007-5-15 12:06 | 显示全部楼层
JS是Javascript和JScript的简称。

JScript是微软把Javascript变种后而得的,所以Jscript可以等同VBScript来看。即:JScript   是微软开发的服务器端语言,可用做ASP开发。

至于操作数据库,不论VBS还是JS,写在服务器端的就可以操作,写在客户端的当然就不能去操作服务器的数据库啦。

重点问题是:客户端OR服务器端?

PS:百度相关资料时用关键字:JScript ASP

[ 本帖最后由 try 于 2007-5-15 12:08 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2007-5-16 02:52 | 显示全部楼层
原帖由 iptton 于 2007-5-15 01:46 发表

function WriteDB()
{
var i = 0;
var con = new ActiveXObject("ADODB.Connection");
var sql = "insert into board (bname, standard, diffcount) values ('dd', 0, 0)";

con ...

这块代码测试过可用吗
想试试,睡不着
回复

使用道具 举报

 楼主| 发表于 2007-5-16 05:00 | 显示全部楼层
我把js连接数据库代码写成函数
  1. <SCRIPT LANGUAGE="JavaScript" runat="server">  
  2. function database()
  3. {
  4. //用 JavaScript 写服务器端连接数据库的代码示例  
  5.   var conn = new ActiveXObject("ADODB.Connection");  
  6.   conn.Open("DBQ=c:\\xcdb.mdb;DRIVER={Microsoft Access Driver (*.mdb)};");   
  7.    var m=rollaward.prototype.awardArray[rollaward.awardnum]//中奖号码
  8.   var sql="select * from dbxcy where d_id="&m;
  9.   var rs = new ActiveXObject("ADODB.Recordset");
  10.   rs.open(sql, conn);
  11.   rs.close();   
  12.   rs = null;   
  13.   conn.close();   
  14.   conn = null;
  15. }
  16. </SCRIPT>
复制代码



然后在
  1. <SCRIPT LANGUAGE="JavaScript">
  2. rollaward.stop=function()
  3. {
  4. clearInterval(interval);
  5. rollaward.prototype.count++;
  6. database();
  7. if(rollaward.prototype.count<2)
  8. $('awardnumber').innerHTML+='一等奖幸运号:' +rollaward.prototype.awardArray[rollaward.awardnum]+'<br/>';
  9.    else
  10.         if(rollaward.prototype.count<5)
  11.         $('awardnumber').innerHTML+='二等奖幸运号:' +rollaward.prototype.awardArray[rollaward.awardnum]+'<br/>';
  12.       else
  13.         if(rollaward.prototype.count<7)
  14.       $('awardnumber').innerHTML+='三等奖幸运号:' +rollaward.prototype.awardArray[rollaward.awardnum]+'<br/>';
  15.        else
  16.             if(rollaward.prototype.count>=7)
  17.        alert('抽奖已顺利完成!')
  18. $('cmd_execute').value='开始摇奖';
  19. for(var i=rollaward.awardnum;i<rollaward.prototype.total;i++)
  20. rollaward.prototype.awardArray[i]=rollaward.prototype.awardArray[i+1];
  21. rollaward.prototype.total--;
  22. rollaward.prototype.awardArray.length--;

  23. }
复制代码


中插入调用查询数据库函数database(); ,搞到stop函数都有问题
回复

使用道具 举报

 楼主| 发表于 2007-5-16 23:56 | 显示全部楼层
想问下,js里面换vbs查询数据库行吗
回复

使用道具 举报

 楼主| 发表于 2007-5-17 01:33 | 显示全部楼层
按道理可以,我自己答自己
回复

使用道具 举报

 楼主| 发表于 2007-5-17 02:17 | 显示全部楼层
似乎成功了,明早早弄下,迟点汇报工作
回复

使用道具 举报

 楼主| 发表于 2007-5-17 12:48 | 显示全部楼层
js的变量怎么传给vbs??



  1. <SCRIPT LANGUAGE="JavaScript">
  2. rollaward.stop=function()
  3. {
  4. clearInterval(interval);
  5. rollaward.prototype.count++;
  6. n=8;
  7. <%
  8. m=n
  9. on error resume next
  10. connstr="DBQ="+server.mappath("xcdb.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
  11. set conn=server.createobject("ADODB.CONNECTION")
  12. conn.open connstr
  13. Set rs= Server.CreateObject("ADODB.Recordset")
  14. sql="select * from dbxcy where d_id="&m
  15. rs.open sql,conn,1,1
  16. %>

  17. if(rollaward.prototype.count<2)
  18. $('awardnumber').innerHTML+='一等奖幸运号:' +rollaward.prototype.awardArray[rollaward.awardnum]+' <%=rs("d_xm")%> ' +'<br/>';
  19.    else
  20.         if(rollaward.prototype.count<5)
  21.         $('awardnumber').innerHTML+='二等奖幸运号:' +rollaward.prototype.awardArray[rollaward.awardnum]+'<br/>';
  22.       else
  23.         if(rollaward.prototype.count<7)
  24.       $('awardnumber').innerHTML+='三等奖幸运号:' +rollaward.prototype.awardArray[rollaward.awardnum]+'<br/>';
  25.        else
  26.             if(rollaward.prototype.count>=7)
  27.        alert('抽奖已顺利完成!')
  28. $('cmd_execute').value='开始摇奖';
  29. for(var i=rollaward.awardnum;i<rollaward.prototype.total;i++)
  30. rollaward.prototype.awardArray[i]=rollaward.prototype.awardArray[i+1];
  31. rollaward.prototype.total--;
  32. rollaward.prototype.awardArray.length--;
  33. }
  34. </SCRIPT>
复制代码


n传不到给m

[ 本帖最后由 2002070344 于 2007-5-17 12:51 编辑 ]
回复

使用道具 举报

发表于 2007-5-17 13:01 | 显示全部楼层
javascript是可以与jsp互访的。
其它的maybe也可以
回复

使用道具 举报

 楼主| 发表于 2007-5-17 14:33 | 显示全部楼层
传不了,网上找着解决方法
回复

使用道具 举报

头像被屏蔽
发表于 2007-5-17 16:02 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

 楼主| 发表于 2007-5-21 00:01 | 显示全部楼层
谢谢各位,在各位指点下已经完成了
我用vbs读出数据
然后放到一个数组中,随机抽取
说起来很简单,花了我很大力气
不知道数据大了,会不会影响运行就是了
谢谢
  1. <%@language="VBSCRIPT" CODEPAGE="936"%>
  2. <HTML>
  3. <HEAD>
  4. <TITLE>6.5环境日有奖征答摇奖仪式</TITLE>
  5. <META NAME="Generator" C>
  6. <META NAME="Author" C>
  7. <META NAME="Keywords" C>
  8. <META NAME="Description" C>
  9. <style>
  10. * {
  11. font-size:10.2pt;
  12. font-family:verdana;
  13. }
  14. .STYLE1 {
  15. font-size: large;
  16. font-weight: bold;
  17. }
  18. </style>
  19. </HEAD>
  20. <BODY>
  21. <%   
  22.   dim   conn ,connstr  
  23.   sub   openConn()   
  24.           set   conn=server.CreateObject("ADODB.CONNECTION")
  25.     connstr = "DBQ="+ Server.MapPath("xcdb.mdb")+"; Defaultdir=; driver={microsoft access driver (*.mdb)};"
  26.           conn.Open(connstr)   
  27.   end   sub   
  28.    
  29.   sub   closeConn()   
  30.           conn.Close   
  31.           set   conn=nothing   
  32.   end   sub   
  33.    
  34.   dim   sql,rs,strList   
  35.   call   openconn()   
  36.   Sql   =   "select   * from   dbxcy"   
  37.   set   rs=conn.execute(sql)   
  38.   if   not   rs.eof   then   
  39.           do   while   not   rs.eof   
  40.           strList   =   strList&","&"姓名:"&rs("d_xm")&"     单位:"&rs("d_gzdw")&"     电话:"&rs("d_lxfs")
  41.   rs.movenext()   
  42.   loop   
  43.   end   if   
  44.   call   closeconn()   
  45.   set   rs=nothing   
  46.   strList   =mid(strList,2,len(strList)-1)   
  47.   %>   
  48. <table width="100%" border="0">
  49.   <tr>
  50.     <td height="80"><div align="center" class="STYLE1">6.5环境日有奖征答摇奖仪式</div></td>
  51.   </tr>
  52. </table>
  53. <table width="80%" border="0" cellpadding="20" cellspacing="0" align="center">
  54.   <tr>
  55.     <td align="center" valign="middle"><button id='cmd_execute'>开始摇奖</button></td>
  56.   </tr>
  57.   <tr>
  58.     <td align="center" valign="middle"><div id='randmizenum' style='width:400px; border:2px solid blue;font-size:20px;'></div></td>
  59.   </tr>
  60.   <tr>
  61.     <td align="center" valign="middle"><div id='awardnumber'></div></td>
  62.   </tr>
  63.   <tr>
  64.     <td align="center" valign="middle" align='center'>edited By 惠州环境信息中心</td>
  65.   </tr>
  66. </table>
  67. <!--   把从数据库读出的数据放到这里来   -->   
  68.       <input   type="hidden"   name="UserNo"   id="NoUser"   value="<%=strList%>">   
  69. <SCRIPT LANGUAGE="JavaScript">
  70. <!--
  71. function $(obj) {return document.getElementById(obj);}
  72. function rollaward() {var awardnum};
  73. rollaward.prototype.awardnum=null;
  74. rollaward.prototype.rollspeed=10;
  75. rollaward.prototype.count=0;
  76. rollaward.prototype.awardArray=new Array();
  77. //-------------分析从数据库中读出的数据   
  78.   var   strUserNo   =   document.getElementById("NoUser");   
  79.   var   strList1       =   strUserNo.value;   
  80.   var   strSplit     =   strList1.split(",");   
  81.   rollaward.prototype.total   =   strSplit.length;   
  82. //------------------------------------------  
  83. rollaward.initialize=function() {
  84. for(var   i=0;i<rollaward.prototype.total;i++)   
  85. rollaward.prototype.awardArray=strSplit;
  86. $('randmizenum').innerHTML+='<b>即 将 摇 出 幸 运 大 奖 !</b>';
  87. }

  88. rollaward.start=function() {
  89. if(rollaward.prototype.total==0)
  90. {
  91. alert('抽奖已顺利完成!');
  92. clearInterval(interval);
  93. return;
  94. }
  95. rollaward.awardnum=parseInt(Math.random()*(rollaward.prototype.total));
  96. $('randmizenum').innerHTML=rollaward.prototype.awardArray[rollaward.awardnum];
  97. $('cmd_execute').value='停止摇奖';
  98. }

  99. function _click(){event.srcElement.value=='开始摇奖'?interval=setInterval(rollaward.start,rollaward.prototype.rollspeed):rollaward.stop();}
  100. rollaward.initialize();
  101. $('cmd_execute').attachEvent('onclick',_click);
  102. //-->
  103. </SCRIPT>
  104. <SCRIPT LANGUAGE="JavaScript">
  105. rollaward.stop=function()
  106. {
  107. clearInterval(interval);
  108. rollaward.prototype.count++;
  109. if(rollaward.prototype.count<2)
  110. $('awardnumber').innerHTML+='<b>一等奖幸运儿:</b>' +rollaward.prototype.awardArray[rollaward.awardnum]+'<br/>'+'<br/>';
  111.    else
  112.         if(rollaward.prototype.count<5)
  113.         $('awardnumber').innerHTML+='<b>二等奖幸运儿:</b>' +rollaward.prototype.awardArray[rollaward.awardnum]+'<br/>'+'<br/>';
  114.       else
  115.         if(rollaward.prototype.count<11)
  116.       $('awardnumber').innerHTML+='<b>三等奖幸运儿:</b>' +rollaward.prototype.awardArray[rollaward.awardnum]+'<br/>'+'<br/>';
  117.        else
  118.             if(rollaward.prototype.count>=11)
  119.        alert('抽奖已顺利完成!')
  120. $('cmd_execute').value='开始摇奖';
  121. for(var i=rollaward.awardnum;i<rollaward.prototype.total;i++)
  122. rollaward.prototype.awardArray=rollaward.prototype.awardArray[i+1];
  123. rollaward.prototype.total--;
  124. rollaward.prototype.awardArray.length--;
  125. }
  126. </SCRIPT>
  127. </BODY>
  128. </HTML>
复制代码

[ 本帖最后由 2002070344 于 2007-5-21 00:06 编辑 ]
未命名.JPG
回复

使用道具 举报

发表于 2007-5-22 20:05 | 显示全部楼层
原帖由 iptton 于 2007/5/15 01:31 发表
刚刚搜了下 JS访问数据
貌似访问的是本地的数据库,而不是服务器的数据库


lz说的js应该说的是ASP里面的js语法~应该说的是除了vbscript语法外,用js语法的asp如何连接数据库。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2025-5-15 10:39

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表