Como se ligar à base de dados do servidor SQL a partir do JavaScript no navegador?

Alguém me pode dar uma amostra de código fonte que mostre como se ligar a uma base de dados de 2005 do JavaScript localmente? Estou aprendendo programação web no meu desktop.

ou preciso de usar outra linguagem de script? Sugira algumas alternativas se você as tiver, mas agora estou tentando fazê-lo com JavaScript. O meu servidor SQL está instalado localmente no meu desktop - SQL Server Management Studio 2005 e no navegador IE7.

Author: jva, 2009-05-13

8 answers

Você não deve usar o JavaScript cliente para aceder às bases de dados por várias razões (má prática, problemas de segurança, etc.), mas se você realmente quiser fazer isto, aqui está um exemplo:

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; 

Uma maneira melhor de se conectar a um servidor sql seria usar alguma linguagem do lado do servidor como PHP, Java,. NET, entre outros. Javascript cliente deve ser usado apenas para as interfaces.

E há rumores de uma lenda antiga sobre a existência do servidor javascript, mas esta é outra história. ;)
 718
Author: Fabio Vinicius Binder, 2009-06-24 13:27:09

Isto seria muito mau de se fazer porque partilhar o texto da ligação Abre o seu site a tantas vulnerabilidades que não pode simplesmente remendar, tem de usar um método diferente se quiser que seja seguro. Caso contrário, você está se abrindo para uma audiência enorme para tirar proveito do seu site.

 23
Author: allen walker, 2011-08-21 23:46:40
Um código de trabalho perfeito..
    <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>
 12
Author: Uthaiah, 2014-04-01 14:39:22

Serviços Web

O SQL 2005 + suporta WebServices nativas que você poderia quase usar, embora eu não o sugira, por causa dos riscos de segurança que você pode enfrentar. Porque é que eu disse quase ... Bem Javascript não é nativo de sabão, então seria um pouco mais complicado para realmente torná-lo. Teria de enviar e receber sabão via [[[[0]]]. Procura clientes de sabonetes Javascript no google.

 10
Author: Robert Koritnik, 2010-01-04 14:55:02

Brincar com o JavaScript numa HTA não tive sorte com uma sequência de ligação driver={SQL Server};..., mas um DSN chamado estava OK:
Eu criei o TestDSN e ele testou OK, e então var strConn= "DSN=TestDSN"; funcionou, então eu continuei a experimentar para os meus testes internos e para fins de aprendizagem.

O Nosso servidor tem várias instâncias em execução, por exemplo, server1\dev e server1\Teste o que tornou as coisas um pouco mais complicado, como eu consegui perder uns tempo esquecendo escapar a \ como \\ :)
Depois de alguns becos sem saída com as cordas da ligação, acabei por conseguir que esta funcionasse.:
var strConn= "Provider=SQLOLEDB;Data Source=server1\\dev;Trusted_Connection=Yes;Initial Catalog=MyDatabase;"

Usando as credenciais do Windows em vez de fornecer um utilizador/pwd, descobri um desvio interessante ao descobrir as subtilezas de Integrated Security = true v Integrated Security = SSPI v Trusted_Connection=Yes - ver diferença entre Segurança Integrada = Segurança verdadeira e integrada = SSPI

Cuidado para que o número de recordes volte como -1Se usar o tipo por omissão adOpenForwardOnly. Se você está trabalhando com pequenos conjuntos de resultados e / ou não se importar com todo o lote em memória ao mesmo tempo, use rs.Open(strQuery, objConnection, 3); (3=adopção pela Comissão em 16 de dezembro.rs.RecordCount

 5
Author: AjV Jsy, 2017-05-23 12:18:24

(Desculpe, esta foi uma resposta mais genérica sobre as infra-estruturas SQL--eu não tinha lido a resposta sobre a funcionalidade de WebServices do servidor sql 2005. Embora, este recurso ainda é executado sobre HTTP ao invés de mais diretamente através de sockets, então essencialmente eles construíram um mini servidor web no servidor de banco de dados, de modo que esta resposta ainda é outra rota que você poderia tomar.)

Também pode ligar-se directamente através de 'sockets' (google "JavaScript sockets") e, directamente neste ponto, quero dizer usando um ficheiro Flash para este propósito, embora o HTML5 tenha tomadas Web como parte da especificação que eu acredito deixar você fazer a mesma coisa.

Algumas pessoas citam problemas de segurança, mas se você projetou as permissões de seu banco de dados corretamente você deve teoricamente ser capaz de acessar o banco de dados a partir de qualquer front-end, incluindo OSQL, e não ter uma quebra de segurança. O problema de segurança, então, seria se você não estivesse conectando via SSL.

Finalmente, tenho a certeza que isto é tudo teórico, porque eu não ... acredite que existem bibliotecas JavaScript para lidar com os protocolos de comunicação para SSL ou Servidor SQL, então, a menos que você esteja disposto a descobrir essas coisas por si mesmo, seria melhor seguir a rota de ter um servidor web e linguagem de script do servidor entre o navegador e o banco de dados.
 3
Author: Kev, 2009-05-13 13:01:07

Como indicado antes, não deve ser feito usando Javascript do lado do cliente, mas há um framework para implementar o que você quer de forma mais segura.

O Nodejs é uma estrutura que lhe permite codificar as ligações do servidor em javascript, por isso dê uma vista de olhos no Nodejs e provavelmente irá aprender um pouco mais sobre a comunicação com bases de dados e a recolha de dados de que necessita.

 3
Author: Shiri, 2014-07-14 12:22:46

Acho que não consegues ligar-te ao servidor SQL a partir de javascripts do lado do cliente. Você precisa pegar alguma linguagem do lado do servidor para construir aplicações web que podem interagir com o seu banco de dados e usar javascript apenas para fazer a sua interface de usuário melhor para interagir.

Pode aprender qualquer linguagem de programação do lado do servidor com base na sua preferência linguística:

  • PHP
  • ASP.Net
  • Ruby On Rails
 1
Author: Vikram, 2009-05-13 12:29:30