JavaScript基于activexobject连接远程数据库SQL Server 2014的方法


Posted in Javascript onJuly 12, 2017

本文实例讲述了JavaScript基于activexobject连接远程数据库SQL Server 2014的方法。分享给大家供大家参考,具体如下:

最近翻开一本10年前买的JavaScript的书,这本书买回来只看了前半部分,后面的一直没看,也一直没有从事这方的工作。

看到有一节写着js连access接数据库,于是照着书上的代码,写了一段在chrome浏览器中运行,发现完全没反应。

查了一下才发现,这个activexobject只有微软的IE支持,其他的浏览器都不支持,我想可能是由于连接数据库、访问文件等属于不安全的操作,应该是让服务器端来做,所以才导致绝大多数浏览器都不支持这个功能。

不过如果从另一个角度看,实际上这种功能适合服务器端的javascript,也就是说下面的代码适合在服务器端运行,而不是在客户端运行。

还有,如果这个代码仅仅是在本地的个人电脑上运行,也是有用的。

比如,我只是想连接数据库,然后把结果输出,我不想搭建一个web服务器,然后还得写个服务器端程序,也不想安装其他软件,太麻烦,比如,用Java或者c#等,就是想越简单越好,什么也不用装。其实这么一想,好像也只有用浏览器能达到这个要求了,浏览器特别方便,也无需安装,所见即所得,也方便调试代码。

所以,从这个特殊的需求来看,这个功能再适合不过了。

接下来说一下代码的基本思路:

(1)通过window.ActiveXObject 判断是否支持activexobject。
(2)获取浏览器名称、平台、版本。
(3)通过activexobject获取了E盘的卷名称
(4)连接sql server 2014,数据库名test,数据源是另外一台机器的ip地址或者主机名。
(5)连接上后,执行sql:select * from tb,查询数据。
(6)遍历每行数据,同时在循环中遍历1行数据中的每个字段的值。

创建数据库、创建表代码:

create database Test;
go
use test;
go
if object_id('tb') is not null
  drop table tb;
go
CREATE TABLE TB(ID INT,NAME NVARCHAR(20),SCORE NUMERIC(10,2));
INSERT INTO TB(ID,NAME,SCORE)
VALUES(1,'语文',100),
   (2,'数学',80),
   (3,'英语',900),
   (4,'政治',65),
   (5,'物理',65),
   (6,'化学',85),
   (7,'生物',55),
   (8,'地理',100)

JavaScript基于activexobject连接远程数据库SQL Server 2014的方法

javascript 代码:

<!doctype html>
<html>
 <head>
  <meta charset="gb2312">
  <title>Document</title>
  <script language="javascript">
    function query()
    {
      var ss = (window.ActiveXObject) ? "此浏览器支持ActiveXObject" : "此浏览器不支持ActiveXObject";
      //alert(navigator.appVersion);
      var xx = document.getElementById("support");
      var a = ( navigator.appVersion+";").split(";");
      xx.innerHTML = "浏览器名称:" + navigator.appName +"<br>" +
              "浏览器平台:" + navigator.platform +"<br>" +
              "浏览器版本:" + a[1].replace("MS","") + "<br>"+
              "<br><b>"+ss+"</b><br><br>";
      var o = new ActiveXObject("Scripting.FileSystemObject");
      var od = o.GetDrive("E");
      xx.innerHTML += ("E盘的卷名称是:" + od.VolumeName);
      //连接数据库
      var db = new ActiveXObject("ADODB.Connection");
      db.open("Provider=SQLOLEDB.1;Data Source=WIN-6;User ID=sa;Password=yupeigu;Initial Catalog=test");
      var rs = db.Execute("select * from tb");
      var c = rs.Fields.Count-1;
      //拼接表的字段名称
      var str = "<table border=1><tr>";
      for(var i = 0; i <=c; i++)
      {
        str += "<td>" + rs.Fields(i).Name + "</td>";
      }
      str += "</tr>";
      //拼接表的数据
      while(!rs.EOF)
      {
        str += "<tr>";
        for(var i = 0;i <= c; i++)
        {
          str += "<td>" + rs.Fields(i).Value + "</td>";
        }
        str += "</tr>";
        rs.moveNext();
      }
      str += "</table>";
      var yy = document.getElementById("sp");
      yy.innerHTML = str;
      rs.Close();
      db.Close();
    }
  </script>
 </head>
 <body >
  <input type="button" onclick="query()" value="查询SQL Server 2014的Test数据库的tb表数据">
  <p>
    <span id="support"></span>
    <hr><br>
    <span id="sp"></span>
  </p>
 </body>
</html>

在IE11 和 IE7 上运行的效果

JavaScript基于activexobject连接远程数据库SQL Server 2014的方法

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
javascript while语句和do while语句的区别分析
Dec 08 Javascript
JScript中使用ADODB.Stream判断文件编码的代码
Jun 09 Javascript
jquery预览图片实现鼠标放上去显示实际大小
Jan 16 Javascript
jquery validate表单验证的基本用法入门
Jan 18 Javascript
Treegrid的动态加载实例代码
Apr 29 Javascript
AngularJS基础 ng-keyup 指令简单示例
Aug 02 Javascript
node.JS md5加密中文与php结果不一致的解决方法
May 05 Javascript
angularjs路由传值$routeParams详解
Sep 05 Javascript
JS实现根据指定值删除数组中的元素操作示例
Aug 02 Javascript
jQuery插件实现的日历功能示例【附源码下载】
Sep 07 jQuery
mpvue全局引入sass文件的方法步骤
Mar 06 Javascript
jQuery实现鼠标拖动图片功能
Mar 04 jQuery
实例详解JavaScript中setTimeout函数的执行顺序
Jul 12 #Javascript
详解Node项目部署到云服务器上
Jul 12 #Javascript
angular.js中解决跨域问题的三种方式
Jul 12 #Javascript
JavaScript+HTML5实现的日期比较功能示例
Jul 12 #Javascript
JavaScript实现设置默认日期范围为最近40天的方法分析
Jul 12 #Javascript
Bootstrap提示框效果的实例代码
Jul 12 #Javascript
JavaScript输出所选择起始与结束日期的方法
Jul 12 #Javascript
You might like
Notice: Trying to get property of non-object problem(PHP)解决办法
2012/03/11 PHP
div li的多行多列 无刷新分页示例代码
2013/10/16 PHP
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
2014/04/10 PHP
PHP 数组黑名单/白名单实例代码详解
2019/06/04 PHP
windows 2008r2+php5.6.28环境搭建详细过程
2019/06/18 PHP
静态的动态续篇之来点XML
2006/12/23 Javascript
JavaScript 不只是脚本
2007/05/30 Javascript
JavaScript delete操作符应用实例
2009/01/13 Javascript
JavaScript 学习笔记(十二) dom
2010/01/21 Javascript
两个比较有用的Javascript工具函数代码
2010/02/17 Javascript
关于this和self的使用说明
2010/08/01 Javascript
JavaScript游戏之优化篇
2010/11/08 Javascript
js面向对象 多种创建对象方法小结
2012/05/21 Javascript
解析javascript 实用函数的使用详解
2013/05/10 Javascript
javascript学习笔记(二)数组和对象部分
2014/09/30 Javascript
Js实现无刷新删除内容
2015/04/29 Javascript
JavaScript数据类型学习笔记
2016/01/25 Javascript
nodejs 最新版安装npm 的使用详解
2018/01/18 NodeJs
vue-cli2.9.3 详细教程
2018/04/23 Javascript
PM2自动部署代码步骤流程总结
2018/12/10 Javascript
Angular使用Restful的增删改
2018/12/28 Javascript
[02:53]DOTA2英雄昆卡基础教程
2013/11/25 DOTA
python根据给定文件返回文件名和扩展名的方法
2015/03/27 Python
python文件与目录操作实例详解
2016/02/22 Python
Python文本相似性计算之编辑距离详解
2016/11/28 Python
Python新手入门最容易犯的错误总结
2017/04/24 Python
Python基于opencv的图像压缩算法实例分析
2018/05/03 Python
Python在for循环中更改list值的方法【推荐】
2018/08/17 Python
Python 函数绘图及函数图像微分与积分
2019/11/20 Python
详解Python中pyautogui库的最全使用方法
2020/04/01 Python
《我要的是葫芦》教学反思
2014/02/23 职场文书
《二泉映月》教学反思
2014/04/15 职场文书
企业年度评优方案
2014/06/02 职场文书
在职员工证明书
2014/09/19 职场文书
售票员岗位职责
2015/02/15 职场文书
给病人的慰问信
2015/03/23 职场文书