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 prototype 原型链
Mar 12 Javascript
修改jQuery.Autocomplete插件 支持中文输入法 避免TAB、ENTER键失效、导致表单提交
Oct 11 Javascript
js 回车提交表单两种实现方法
Dec 31 Javascript
node.js中的events.emitter.listeners方法使用说明
Dec 10 Javascript
flexslider.js实现移动端轮播
Feb 05 Javascript
详解Vue2.0 事件派发与接收
Sep 05 Javascript
jQuery实现的表格前端排序功能示例
Sep 18 jQuery
vue 组件中添加样式不生效的解决方法
Jul 06 Javascript
vue框架搭建之axios使用教程
Jul 11 Javascript
ES6常用小技巧总结【去重、交换、合并、反转、迭代、计算等】
Dec 21 Javascript
JS Html转义和反转义(html编码和解码)的实现与使用方法总结
Mar 10 Javascript
浅谈vant组件Picker 选择器选单选问题
Nov 04 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
《五等分的花嫁》漫画完结!2020年10月第2期TV动画制作组换血!
2020/03/06 日漫
通过文字传递创建的图形按钮
2006/10/09 PHP
phpMyAdmin 安装配置方法和问题解决
2009/06/08 PHP
php下图片文字混合水印与缩略图实现代码
2009/12/11 PHP
php url地址栏传中文乱码解决方法集合
2010/06/25 PHP
Yii使用CLinkPager分页实例详解
2014/07/23 PHP
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
thinkphp3.2.0 setInc方法 源码全面解析
2018/01/29 PHP
Yii框架ACF(accessController)简单权限控制操作示例
2019/04/26 PHP
脚本之家贴图转换+转贴工具用到的js代码超级推荐
2007/04/05 Javascript
jQuery的css()方法用法实例
2014/12/24 Javascript
JavaScript实现的多个图片广告交替显示效果代码
2015/09/04 Javascript
Nodejs的express使用教程
2015/11/23 NodeJs
轻松实现js弹框显示选项
2016/09/13 Javascript
AngularJS入门教程之MVC架构实例分析
2016/11/01 Javascript
jquery replace方法去空格
2017/05/08 jQuery
基于JavaScript实现数码时钟效果
2020/03/30 Javascript
vue 指令之气泡提示效果的实现代码
2018/10/18 Javascript
Vue基本使用之对象提供的属性功能
2019/04/30 Javascript
[05:35]DOTA2英雄梦之声_第13期_拉比克
2014/06/21 DOTA
python-opencv在有噪音的情况下提取图像的轮廓实例
2017/08/30 Python
Python设计模式之观察者模式简单示例
2018/01/10 Python
Python+tkinter使用40行代码实现计算器功能
2018/01/30 Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
2019/06/25 Python
解决python中的幂函数、指数函数问题
2019/11/25 Python
英国最大的运动营养公司之一:LA Muscle
2018/07/02 全球购物
公务员上班玩游戏检讨书
2014/09/17 职场文书
局领导领导班子四风对照检查材料
2014/09/27 职场文书
干部作风建设心得体会
2014/10/22 职场文书
比赛主持人开场白
2015/05/29 职场文书
赵氏孤儿观后感
2015/06/09 职场文书
新员工入职感想
2015/08/07 职场文书
创业计划书之o2o水果店
2019/08/30 职场文书
Python下opencv库的安装过程及问题汇总
2021/06/11 Python
Python访问Redis的详细操作
2021/06/26 Python
MySQL面试题讲解之如何设置Hash索引
2021/11/01 MySQL