当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何在浏览器中从JavaScript连接到SQLServer数据库?》经验,为你挑选了5个好方法。

任何人都可以给我一些示例源代码,展示如何从本地JavaScript连接到SQL Server 2005数据库?我在桌面上学习网络编程.

或者我是否需要使用任何其他脚本语言?如果你有它们,建议一些替代方案,但我现在尝试使用JavaScript.我的SQL Server本地安装在我的桌面上 - SQL Server Management Studio 2005和IE7浏览器.



1> Fabio Vinici..:

由于多种原因(不良做法,安全问题等),您不应该使用客户端javascript来访问数据库,但如果您真的想这样做,请举例说明:

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

var connectionstring="Data Source=;Initial Catalog=;User ID=;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存在的古老传说,但这是另一个故事.;)


恭喜几乎是这里唯一一个真正表明有可能的人(虽然不推荐).
然而,应该注意的是,由于使用ActiveX,这个答案可能不适用于非IE浏览器(即使原始海报明确表明他使用IE).
我不明白为什么这个评论有资格作为反对票.我解释了如何做,但告诉他不要使用它.
fbinder:有些人会对此进行投票,因为他们认为任何尝试数据库连接和从JavaScript查询都是一个很大的禁忌(尽管你很明确地说明了这一点).如果我是你,我不介意你得到的一两个否定票,只是享受它将收到的众多票数,因为它是实际回答提出的问题的唯一答案.
虽然这可以用于OP的设置 - 但他确实说他想学习"网络编程" - 而且在低安全性环境中的Internet Explorer不是网络编程.
Jdoonan:从不?没有这样的事情.我会举一个例子.如果要创建基于Web的ETL工具怎么办?它必须连接到不同的数据库并执行各种操作.您希望为客户提供连接到他们可以从他们的计算机访问的任何数据库的能力,因为他们不必将他们的数据库公开在互联网上或强制整个服务器连接到VPN(最后一个有各种各样的问题).我相信这个话题很棒!我将搜索不同数据库的跨浏览器连接方法.
我认为*您可以更改"用户ID = <用户>;密码= <密码>;" "集成安全性= SSPI"并获得更好的安全性.黑客仍然可以获得数据库和服务器名称,但我不认为如果没有用户名和密码,这将对他们有所帮助.其他人对此有何看法?
每个人都认为这是疯狂的,也是一种不好的做法,但实际上并非如此.MySQL提供内置的用户权限系统.如果你正确设置它,它实际上为您提供更好的安全性和防止SQL注入.因为您可以在较新的版本中设置行级权限,所以它实际上是一个非常强大的编程范例,尤其是当与sequ​​elizejs.com等js ORM结合使用时.r0ml谈到了这个,基本上是如何开发一个没有应用程序层的应用程序,只需直接JS到SQL访问https://www.hackerschool.com/events/90

2> 小智..:

这样做真的很糟糕,因为共享你的连接字符串会打开你的网站到很多你不能简单修补的漏洞,如果你想要它是安全的,你必须使用不同的方法.否则,您将向大量受众开放,以利用您的网站.


否决票是因为OP并没有问这是好是坏,他们问如何。您可以在一个实际的答案中插入为什么这可能不是一个好主意,但是仅仅说这是一个坏主意就不应该成为它自己的答案,它充其量只是一条评论。
Upvote,因为你实际上解释了为什么这是一个坏主意

3> Uthaiah..:

完美的工作代码..

    



4> Robert Korit..:

网页服务

SQL 2005+支持您几乎可以使用的本机Web服务,尽管我不建议使用它,因为您可能面临安全风险.为什么我差点说.好吧Javascript不是SOAP原生的,所以实际制作它会有点复杂.您必须通过发送和接收SOAP XmlHttpRequest.检查谷歌的Javascript SOAP客户端.

http://msdn.microsoft.com/en-us/library/ms345123.aspx - SQL本机Web服务

http://www.google.com/search?q=javascript+soap - Javascript SOAP客户端的Google搜索结果



5> AjV Jsy..:

在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

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有