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入门教程(10) 认识其他对象
Jan 31 Javascript
关于递归运算的顺序测试代码
Nov 30 Javascript
jquery判断浏览器后退时候弹出消息的方法
Aug 11 Javascript
开启Javascript中apply、call、bind的用法之旅模式
Oct 28 Javascript
js右下角弹出提示框示例代码
Jan 12 Javascript
基于jQuery的网页影音播放器jPlayer的基本使用教程
Mar 08 Javascript
浅谈JavaScript 中有关时间对象的方法
Aug 15 Javascript
Vue.js bootstrap前端实现分页和排序
Mar 10 Javascript
JS实现简易换图时钟功能分析
Jan 04 Javascript
vue中进入详情页记住滚动位置的方法(keep-alive)
Sep 21 Javascript
微信小程序基础教程之worker线程的使用方法
Jul 15 Javascript
vue中v-model对select的绑定操作
Aug 31 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验证码函数的使用示例
2013/05/03 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
2014/04/29 PHP
Json_encode防止汉字转义成unicode的方法
2016/02/25 PHP
利用PHP将图片转换成base64编码的实现方法
2016/09/13 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
2019/10/11 PHP
在PHP中实现使用Guzzle执行POST和GET请求
2019/10/15 PHP
经典的解除许多网站无法复制文字的绝招
2006/12/31 Javascript
情人节专属 纯js脚本1k大小的3D玫瑰效果
2012/02/11 Javascript
JS动态调用方法名示例介绍
2013/12/18 Javascript
JS拖拽组件学习使用
2016/01/19 Javascript
JS常用函数和常用技巧小结
2016/10/15 Javascript
NodeJS配置HTTPS服务实例分享
2017/02/19 NodeJs
JS基于贪心算法解决背包问题示例
2017/11/27 Javascript
微信小程序实现给嵌套template模板传递数据的方式总结
2017/12/18 Javascript
详解在vue-test-utils中mock全局对象
2018/11/07 Javascript
微信小程序实现发送验证码按钮效果
2018/12/20 Javascript
javascript实现商品图片放大镜
2019/11/28 Javascript
JS轮播图的实现方法2
2020/08/25 Javascript
python 控制语句
2011/11/03 Python
python打印n位数“水仙花数”(实例代码)
2019/12/25 Python
基于CSS3实现的黑色个性导航菜单效果
2015/09/14 HTML / CSS
HTML5添加禁止缩放功能
2017/11/03 HTML / CSS
html5跳转小程序wx-open-launch-weapp踩坑
2020/12/02 HTML / CSS
中国电子产品外贸网站:MiniIntheBox
2017/02/06 全球购物
英国奢侈品概念店:Base Blu
2019/05/16 全球购物
医学院学生求职简历的自我评价
2013/10/24 职场文书
你懂得怎么写自荐信吗?
2013/12/27 职场文书
初婚未育证明
2014/01/15 职场文书
2014两会优秀的心得体会范文
2014/03/17 职场文书
客户经理竞聘演讲稿
2014/05/15 职场文书
消防安全宣传口号
2014/06/10 职场文书
诚实守信演讲稿
2014/09/01 职场文书
2015年小学实验室工作总结
2015/07/28 职场文书
《自己的花是让别人看的》教学反思
2016/02/19 职场文书
BCL经典机 SONY ICF-5900W电路分析
2022/04/24 无线电
科学家研发出新型速效酶,可在 24 小时内降解塑料制品
2022/04/29 数码科技