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 相关文章推荐
使用正则替换变量
May 05 Javascript
到处都是jQuery选择器的年代 不了解它们的性能,行吗
Jun 18 Javascript
jQuery简单tab切换效果实现方法
Apr 08 Javascript
JavaScript中Number.MAX_VALUE属性的使用方法
Jun 04 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
Oct 31 Javascript
js实现的页面矩阵图形变换特效
Jan 26 Javascript
JavaScript实现简单Tip提示框效果
Apr 20 Javascript
BootStrap Fileinput的使用教程
Dec 30 Javascript
bootstrap——bootstrapTable实现隐藏列的示例
Jan 14 Javascript
详解AngularJS通过ocLazyLoad实现动态(懒)加载模块和依赖
Mar 01 Javascript
使用Angular material主题定义自己的组件库的配色体系
Sep 04 Javascript
jquery实现进度条状态展示
Mar 26 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
《OVERLORD》手游英文版即将上线 手机上也能扮演骨王
2020/04/09 日漫
php xfocus防注入资料
2008/04/27 PHP
PHP把小数转成整数3种方法
2014/06/30 PHP
PHP实现上传多文件示例代码
2017/02/20 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
Ajax+PHP实现的删除数据功能示例
2019/02/12 PHP
laravel 判断查询数据库返回值的例子
2019/10/11 PHP
使两个iframe的高度与内容自适应,且相等
2006/11/20 Javascript
javascript中的undefined 与 null 的区别  补充篇
2010/03/17 Javascript
JS实现self的resend
2010/07/22 Javascript
通过jQuery源码学习javascript(三)
2012/12/27 Javascript
jquery zTree异步加载简单实例分享
2013/02/05 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
2015/02/27 Javascript
JS获取input file绝对路径的方法(推荐)
2016/08/02 Javascript
基于vue-cli3和element实现登陆页面
2019/11/13 Javascript
《javascript设计模式》学习笔记三:Javascript面向对象程序设计单例模式原理与实现方法分析
2020/04/07 Javascript
[01:24]DOTA2上海特锦赛OG战队抵达 专车接机入驻总统套房
2016/02/23 DOTA
python判断图片宽度和高度后删除图片的方法
2015/05/22 Python
Python统计日志中每个IP出现次数的方法
2015/07/06 Python
Python实现查找系统盘中需要找的字符
2015/07/14 Python
python数据处理实战(必看篇)
2017/06/11 Python
python 读入多行数据的实例
2018/04/19 Python
pytorch查看torch.Tensor和model是否在CUDA上的实例
2020/01/03 Python
Python-jenkins模块获取jobs的执行状态操作
2020/05/12 Python
Expedia韩国官网:亚洲发展最快的在线旅游门户网站
2018/02/26 全球购物
网络安全方面的面试题
2016/01/07 面试题
仪器仪表检测毕业生自荐信
2013/10/31 职场文书
幼儿园托班开学寄语
2014/01/18 职场文书
应聘编辑自荐信范文
2014/03/12 职场文书
领导班子个人对照检查材料(群众路线)
2014/09/26 职场文书
2014年审计人员工作总结
2014/12/19 职场文书
先进典型事迹材料
2014/12/29 职场文书
CSS3实现的水平标题菜单
2021/04/14 HTML / CSS
用Python监控你的朋友都在浏览哪些网站?
2021/05/27 Python
Python自动化测试PO模型封装过程详解
2021/06/22 Python