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实现统计文本框Textarea字数增强用户体验
Dec 21 Javascript
JS网页图片按比例自适应缩放实现方法
Jan 15 Javascript
PHP PDO操作总结
Nov 17 Javascript
借助FileReader实现将文件编码为Base64后通过AJAX上传
Dec 24 Javascript
jQuery Easyui Datagrid实现单行的上移下移及保存移动的结果
Aug 15 Javascript
轻松玩转BootstrapTable(后端使用SpringMVC+Hibernate)
Sep 06 Javascript
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
Dec 05 Javascript
微信小程序实现点击按钮修改字体颜色功能【附demo源码下载】
Dec 05 Javascript
angular组件间传值测试的方法详解
May 07 Javascript
JavaScript 实现轮播图特效的示例
Nov 05 Javascript
基于JavaScript实现轮播图效果
Jan 02 Javascript
javascript代码简写的几种常用方式汇总
Aug 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
广播爱好者需要了解的天线知识
2021/03/01 无线电
PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)
2012/05/07 PHP
php面向对象 字段的声明与使用
2012/06/14 PHP
php检测图片木马多进制编程实践
2013/04/11 PHP
php遍历文件夹和文件列表示例分享
2014/03/11 PHP
php使用Jpgraph绘制饼状图的方法
2015/06/10 PHP
PHP入门教程之数学运算技巧总结
2016/09/11 PHP
原生js实现fadein 和 fadeout淡入淡出效果
2014/06/05 Javascript
AngularJS中run方法的巧妙运用
2017/01/04 Javascript
js实现瀑布流效果(自动生成新的内容)
2017/03/16 Javascript
详解Angular Reactive Form 表单验证
2017/07/06 Javascript
ReactNative页面跳转Navigator实现的示例代码
2017/08/02 Javascript
详解基于 Nuxt 的 Vue.js 服务端渲染实践
2017/10/24 Javascript
在 Vue 项目中引入 tinymce 富文本编辑器的完整代码
2018/05/04 Javascript
vue 中动态绑定class 和 style的方法代码详解
2018/06/01 Javascript
微信小程序使用wxParse解析html的方法示例
2019/01/17 Javascript
深入理解使用Vue实现Context-Menu的思考与总结
2019/03/09 Javascript
Angular2实现的秒表及改良版示例
2019/05/10 Javascript
关于element-ui的隐藏组件el-scrollbar的使用
2019/05/29 Javascript
layui 对弹窗 form表单赋值的实现方法
2019/09/04 Javascript
jQuery实现简易QQ聊天框
2020/02/10 jQuery
解决python写的windows服务不能启动的问题
2014/04/15 Python
使用Python机器学习降低静态日志噪声
2018/09/29 Python
深入浅析python 协程与go协程的区别
2019/05/09 Python
解决pyecharts在jupyter notebook中使用报错问题
2020/04/23 Python
使用python计算三角形的斜边例子
2020/04/15 Python
QML实现钟表效果
2020/06/02 Python
纯CSS3实现自定义Tooltip边框涂鸦风格的教程
2014/11/05 HTML / CSS
电气工程及其自动化自我评价四篇
2013/09/24 职场文书
毕业生精彩的自我评价分享
2013/10/06 职场文书
争论的故事教学反思
2014/02/06 职场文书
工业自动化专业自荐信范文
2014/04/10 职场文书
先进典型发言材料
2014/12/30 职场文书
Java后端 Dubbo retries 超时重试机制的解决方案
2022/04/14 Java/Android
分享python函数常见关键字
2022/04/26 Python
Ubuntu Server 安装Tomcat并配置systemctl
2022/04/28 Servers