如何从浏览器中的JavaScript连接到SQL Server数据库?

2020/10/06 19:01 · javascript ·  · 0评论

谁能给我一些示例源代码,以显示如何从JavaScript本地连接到SQL Server 2005数据库?我正在台式机上学习Web编程。

还是我需要使用任何其他脚本语言?如果您有其他建议,请提出一些建议,但是我现在正尝试使用JavaScript。我的SQL Server是本地安装在桌面上的-SQL Server Management Studio 2005和IE7浏览器。

出于多种原因(不良做法,安全性问题等),您不应该使用客户端javascript访问数据库,但是如果您确实想这样做,请参见以下示例:

var connection = new ActiveXObject("ADODB.Connection") ;

var connectionstring="Data Source=<server>;Initial Catalog=<catalog>;User ID=<user>;Password=<password>;Provider=SQLOLEDB";

connection.Open(connectionstring);
var rs = new ActiveXObject("ADODB.Recordset");

rs.Open("SELECT * FROM table", connection);
rs.MoveFirst
while(!rs.eof)
{
   document.write(rs.fields(1));
   rs.movenext;
}

rs.close;
connection.close; 

连接到sql服务器的更好方法是使用某些服务器端语言,例如PHP,Java,.NET等。客户端javascript仅应用于接口。

并且有关于服务器javascript存在的古老传说的传言,但这是另一个故事。;)

这样做确实很不好,因为共享连接字符串会使您的网站面临许多漏洞,您无法简单地对其进行修补,因此如果您想确保其安全性,则必须使用其他方法。否则,您将向大量受众开放,以利用您的网站。

完美的工作代码

    <script>
    var objConnection = new ActiveXObject("adodb.connection");
    var strConn = "driver={sql server};server=QITBLRQIPL030;database=adventureworks;uid=sa;password=12345";
    objConnection.Open(strConn);
    var rs = new ActiveXObject("ADODB.Recordset");
    var strQuery = "SELECT * FROM  Person.Address";
    rs.Open(strQuery, objConnection);
    rs.MoveFirst();
    while (!rs.EOF) {
        document.write(rs.fields(0) + "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
        document.write(rs.fields(1) + "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
        document.write(rs.fields(2) + "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    ");
        document.write(rs.fields(3) + "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    ");
        document.write(rs.fields(4) + "<br/>");
        rs.movenext();
    }
</script>

网页服务

SQL 2005+支持您几乎可以使用的本机Web服务,尽管我不建议这样做,因为您可能会面临安全风险。我为什么几乎要说好吧,Javascript不是SOAP原生的,因此实际制作起来会有些复杂。您必须通过发送和接收SOAP XmlHttpRequest在Google上检查Javascript SOAP客户端。

在HTA中使用JavaScript玩时,我对driver={SQL Server};...连接字符串不满意,但是命名为DSN没问题:

我设置了
TestDSN并对其进行了测试,然后var strConn= "DSN=TestDSN";工作了,因此我进行了内部测试和学习目的的实验。

我们的服务器有几个实例正在运行,例如server1 \ devserver1 \ Test,这使事情变得有些棘手,因为我设法浪费了一些时间来忘记转义\as \\:)

server=server1;instanceName=dev连接字符串中出现一些死胡同之后,我最终得到了这个一个工作:
var strConn= "Provider=SQLOLEDB;Data Source=server1\\dev;Trusted_Connection=Yes;Initial Catalog=MyDatabase;"

使用Windows凭据而不是提供用户/密码,我发现一个有趣的转移是发现Integrated Security = truev Integrated Security = SSPIv的微妙之处Trusted_Connection=Yes-请参阅Integrated Security = True和Integrated Security = SSPI之间的区别

请注意,RecordCount会像-1使用默认的adOpenForwardOnly类型一样返回。如果您正在处理小的结果集和/或不介意一次存储全部内存,请使用rs.Open(strQuery, objConnection, 3); (3 = adOpenStatic),这样可以提供一个有效的rs.RecordCount

如前所述,不应使用客户端Javascript来完成,但有一个框架可以更安全地实现您想要的内容。

Nodejs是一个框架,允许您使用javascript编写服务器连接代码,因此对Nodejs进行一下研究,您可能会学到更多有关与数据库通信和获取所需数据的知识。

(很抱歉,这是有关SQL后端的更通用的答案-我尚未阅读有关SQL Server 2005的WebServices功能的答案。尽管此功能仍通过HTTP运行,而不是直接通过套接字运行,所以从本质上讲,它们已经建立小型Web服务器连接到数据库服务器,因此此答案仍然是您可以采取的另一种方法。)

您也可以直接使用套接字(Google“ javascript套接字”)进行连接,这时我的意思是为此目的使用Flash文件,尽管HTML5将Web套接字作为规范的一部分,我相信您可以做同样的事情。

有人引用了安全问题,但是,如果您正确设计了数据库权限,从理论上讲,您应该能够从任何前端(包括OSQL)访问数据库,并且不会出现安全漏洞。那么,安全问题将在于您是否未通过SSL连接。

最后,尽管如此,我很确定这都是理论上的,因为我不相信有任何JavaScript库可用于处理SSL或SQL Server的通信协议,因此除非您愿意自己解决这些问题,否则最好在浏览器和数据库之间使用Web服务器和服务器端脚本语言。

我不认为您可以从客户端JavaScript连接到SQL Server。您需要选择一些服务器端语言来构建可与数据库交互的Web应用程序,并仅使用javascript来使您的用户界面更好地与之交互。

您可以根据自己的语言偏好选择任何服务器端脚本语言:

  • 的PHP
  • 网络
  • Ruby On Rails
本文地址:http://javascript.askforanswer.com/ruhecongliulanqizhongdejavascriptlianjiedaosql-servershujuku.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!