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 相关文章推荐
jQuery对象数据缓存Cache原理及jQuery.data方法区别介绍
Apr 07 Javascript
判断复选框是否被选中的两种方法
Jun 04 Javascript
JQuery中DOM事件绑定用法详解
Jun 13 Javascript
.NET微信公众号开发之创建自定义菜单
Jul 16 Javascript
vue插件tab选项卡使用小结
Oct 27 Javascript
学习Vue组件实例
Apr 28 Javascript
详解React之父子组件传递和其它一些要点
Jun 25 Javascript
如何在Vue.js中实现标签页组件详解
Jan 02 Javascript
Javascript通过控制类名更改样式
May 24 Javascript
JS中实现浅拷贝和深拷贝的代码详解
Jun 05 Javascript
JQuery+drag.js上传图片并且实现图片拖曳
Nov 18 jQuery
记录一次websocket封装的过程
Nov 23 Javascript
实例详解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
用php实现像JSP,ASP里Application那样的全局变量
2007/01/12 PHP
PHP 巧用数组降低程序的时间复杂度
2010/01/01 PHP
JS getStyle获取最终样式函数代码
2010/04/01 Javascript
window.location.hash 使用说明
2010/11/08 Javascript
深入理解JavaScript系列(43):设计模式之状态模式详解
2015/03/04 Javascript
JavaScript中的函数声明和函数表达式区别浅析
2015/03/27 Javascript
深入解析JavaScript编程中的this关键字使用
2015/11/09 Javascript
JavaScript中数组去除重复的三种方法
2016/04/22 Javascript
JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析
2016/12/25 Javascript
Chrome浏览器的alert弹窗禁止再次弹出后恢复的方法
2016/12/30 Javascript
详谈JavaScript的闭包及应用
2017/01/17 Javascript
JavaScript数组去重的6个方法
2017/01/21 Javascript
Bootstrap笔记—折叠实例代码
2017/03/13 Javascript
vue2.0 axios前后端数据处理实例代码
2017/06/30 Javascript
vue: WebStorm设置快速编译运行的方法
2018/10/18 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
bootstrap-table formatter 使用vue组件的方法
2019/05/09 Javascript
vue-cli3+ts+webpack实现多入口多出口功能
2019/05/30 Javascript
微信公众号平台接口开发 菜单管理的实现
2019/08/14 Javascript
解决在layer.open中使用时间控件laydate失败的问题
2019/09/11 Javascript
layui-select动态选中值的例子
2019/09/23 Javascript
[02:40]DOTA2英雄基础教程 先知
2013/11/29 DOTA
学习python的几条建议分享
2013/02/10 Python
Python3如何解决字符编码问题详解
2017/04/23 Python
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
2018/02/13 Python
keras 两种训练模型方式详解fit和fit_generator(节省内存)
2020/07/03 Python
艺术爱好者的自我评价分享
2013/10/08 职场文书
金融专业应届生求职信
2013/11/02 职场文书
《走一步再走一步》教学反思
2014/02/15 职场文书
中层干部竞聘演讲稿
2014/05/15 职场文书
化学专业自荐信
2014/05/28 职场文书
日语系毕业求职信
2014/07/27 职场文书
上班迟到检讨书
2015/05/06 职场文书
获奖感言范文
2015/07/31 职场文书
建国70周年的心得体会(2篇)
2019/09/20 职场文书
vue elementUI批量上传文件
2022/04/26 Vue.js