2002070344 发表于 2007-5-15 00:34

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

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

[ 本帖最后由 2002070344 于 2007-5-21 00:03 编辑 ]

2002070344 发表于 2007-5-15 00:39

原来代码为

<!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+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;
$('cmd_execute').value='stop roll award';
}
rollaward.stop=function() {
clearInterval(interval);
rollaward.prototype.count++;
$('awardnumber').innerHTML+='第 ' + rollaward.prototype.count + ' 位中奖者:' +rollaward.prototype.awardArray+'<br/>';
$('cmd_execute').value='start roll award';

for(var i=rollaward.awardnum;i<rollaward.prototype.total;i++)
rollaward.prototype.awardArray=rollaward.prototype.awardArray;
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>




我主要修改了rollaward.stop函数

修改后为:

<%@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+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;
$('cmd_execute').value='停止摇奖';
}

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



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

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

2002070344 发表于 2007-5-15 00:40

继续百度看看有没解决方法
知道的同学,麻烦提个醒,指点一下

iptton 发表于 2007-5-15 01:29

你所说的 VBScript 访问数据库应该是runat=server 的吧

好像这是在ASP里用的

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


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


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

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

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

iptton 发表于 2007-5-15 01:31

刚刚搜了下 JS访问数据
貌似访问的是本地的数据库,而不是服务器的数据库

2002070344 发表于 2007-5-15 01:33

应该算本地数据库吧
我把数据库拷到该asp同个目录下

2002070344 发表于 2007-5-15 01:43

网上抄了段js查询数据库的,凑在一起有点不伦不类的
运行也失败
明天上班有空再看看

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.Provider = "Microsoft.Jet.OLEDB.4.0";
con.ConnectionString = "Data Source=E:\\DB\\VITest.mdb";

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

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

con.close();
con = null;
}

try 发表于 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 编辑 ]

2002070344 发表于 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 ...
这块代码测试过可用吗
想试试,睡不着

2002070344 发表于 2007-5-16 05:00

我把js连接数据库代码写成函数
<SCRIPT LANGUAGE="JavaScript" runat="server">
function database()
{
//用 JavaScript 写服务器端连接数据库的代码示例
  var conn = new ActiveXObject("ADODB.Connection");
  conn.Open("DBQ=c:\\xcdb.mdb;DRIVER={Microsoft Access Driver (*.mdb)};");   
   var m=rollaward.prototype.awardArray//中奖号码
  var sql="select * from dbxcy where d_id="&m;
  var rs = new ActiveXObject("ADODB.Recordset");
  rs.open(sql, conn);
  rs.close();   
  rs = null;   
  conn.close();   
  conn = null;
}
</SCRIPT>



然后在<SCRIPT LANGUAGE="JavaScript">
rollaward.stop=function()
{
clearInterval(interval);
rollaward.prototype.count++;
database();
if(rollaward.prototype.count<2)
$('awardnumber').innerHTML+='一等奖幸运号:' +rollaward.prototype.awardArray+'<br/>';
   else
      if(rollaward.prototype.count<5)
      $('awardnumber').innerHTML+='二等奖幸运号:' +rollaward.prototype.awardArray+'<br/>';
      else
      if(rollaward.prototype.count<7)
      $('awardnumber').innerHTML+='三等奖幸运号:' +rollaward.prototype.awardArray+'<br/>';
       else
            if(rollaward.prototype.count>=7)
       alert('抽奖已顺利完成!')
$('cmd_execute').value='开始摇奖';
for(var i=rollaward.awardnum;i<rollaward.prototype.total;i++)
rollaward.prototype.awardArray=rollaward.prototype.awardArray;
rollaward.prototype.total--;
rollaward.prototype.awardArray.length--;

}

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

2002070344 发表于 2007-5-16 23:56

想问下,js里面换vbs查询数据库行吗

2002070344 发表于 2007-5-17 01:33

按道理可以,我自己答自己

2002070344 发表于 2007-5-17 02:17

似乎成功了,明早早弄下,迟点汇报工作

2002070344 发表于 2007-5-17 12:48

js的变量怎么传给vbs??



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

if(rollaward.prototype.count<2)
$('awardnumber').innerHTML+='一等奖幸运号:' +rollaward.prototype.awardArray+' <%=rs("d_xm")%> ' +'<br/>';
   else
      if(rollaward.prototype.count<5)
      $('awardnumber').innerHTML+='二等奖幸运号:' +rollaward.prototype.awardArray+'<br/>';
      else
      if(rollaward.prototype.count<7)
      $('awardnumber').innerHTML+='三等奖幸运号:' +rollaward.prototype.awardArray+'<br/>';
       else
            if(rollaward.prototype.count>=7)
       alert('抽奖已顺利完成!')
$('cmd_execute').value='开始摇奖';
for(var i=rollaward.awardnum;i<rollaward.prototype.total;i++)
rollaward.prototype.awardArray=rollaward.prototype.awardArray;
rollaward.prototype.total--;
rollaward.prototype.awardArray.length--;
}
</SCRIPT>

n传不到给m

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

hjack 发表于 2007-5-17 13:01

javascript是可以与jsp互访的。
其它的maybe也可以

2002070344 发表于 2007-5-17 14:33

传不了,网上找着解决方法

dy.f 发表于 2007-5-17 16:02

2002070344 发表于 2007-5-21 00:01

谢谢各位,在各位指点下已经完成了
我用vbs读出数据
然后放到一个数组中,随机抽取
说起来很简单,花了我很大力气
不知道数据大了,会不会影响运行就是了
谢谢
<%@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>
<%   
dim   conn ,connstr
sub   openConn()   
          set   conn=server.CreateObject("ADODB.CONNECTION")
    connstr = "DBQ="+ Server.MapPath("xcdb.mdb")+"; Defaultdir=; driver={microsoft access driver (*.mdb)};"
          conn.Open(connstr)   
end   sub   
   
sub   closeConn()   
          conn.Close   
          set   conn=nothing   
end   sub   
   
dim   sql,rs,strList   
call   openconn()   
Sql   =   "select   * from   dbxcy"   
set   rs=conn.execute(sql)   
if   not   rs.eof   then   
          do   while   not   rs.eof   
          strList   =   strList&","&"姓名:"&rs("d_xm")&"   单位:"&rs("d_gzdw")&"   电话:"&rs("d_lxfs")
rs.movenext()   
loop   
end   if   
call   closeconn()   
set   rs=nothing   
strList   =mid(strList,2,len(strList)-1)   
%>   
<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:400px; 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>
<!--   把从数据库读出的数据放到这里来   -->   
      <input   type="hidden"   name="UserNo"   id="NoUser"   value="<%=strList%>">   
<SCRIPT LANGUAGE="JavaScript">
<!--
function $(obj) {return document.getElementById(obj);}
function rollaward() {var awardnum};
rollaward.prototype.awardnum=null;
rollaward.prototype.rollspeed=10;
rollaward.prototype.count=0;
rollaward.prototype.awardArray=new Array();
//-------------分析从数据库中读出的数据   
var   strUserNo   =   document.getElementById("NoUser");   
var   strList1       =   strUserNo.value;   
var   strSplit   =   strList1.split(",");   
rollaward.prototype.total   =   strSplit.length;   
//------------------------------------------
rollaward.initialize=function() {
for(var   i=0;i<rollaward.prototype.total;i++)   
rollaward.prototype.awardArray=strSplit;
$('randmizenum').innerHTML+='<b>即 将 摇 出 幸 运 大 奖 !</b>';
}

rollaward.start=function() {
if(rollaward.prototype.total==0)
{
alert('抽奖已顺利完成!');
clearInterval(interval);
return;
}
rollaward.awardnum=parseInt(Math.random()*(rollaward.prototype.total));
$('randmizenum').innerHTML=rollaward.prototype.awardArray;
$('cmd_execute').value='停止摇奖';
}

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

[ 本帖最后由 2002070344 于 2007-5-21 00:06 编辑 ]

wool王 发表于 2007-5-22 20:05

原帖由 iptton 于 2007/5/15 01:31 发表
刚刚搜了下 JS访问数据
貌似访问的是本地的数据库,而不是服务器的数据库

lz说的js应该说的是ASP里面的js语法~应该说的是除了vbscript语法外,用js语法的asp如何连接数据库。
页: [1] 2
查看完整版本: js可以操作数据库吗?(asp 抽奖 数据库 实例)