Come connettersi al database SQL Server da JavaScript nel browser?

Qualcuno può darmi qualche esempio di codice sorgente che mostra come connettersi a un database SQL Server 2005 da JavaScript localmente? Sto imparando la programmazione web sul mio desktop.

O devo usare un altro linguaggio di scripting? Suggerisci alcune alternative se li hai, ma ora sto provando a farlo con JavaScript. Il mio SQL Server è installato localmente sul mio desktop – SQL Server Management Studio 2005 e browser IE7.

Non dovresti usare il client javascript per accedere ai database per diversi motivi (cattive pratiche, problemi di sicurezza, ecc.) Ma se vuoi davvero farlo, ecco un esempio:

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; 

Un modo migliore per connettersi a un server SQL sarebbe utilizzare un linguaggio lato server come PHP, Java, .NET, tra gli altri. Il javascript del client deve essere utilizzato solo per le interfacce.

E ci sono voci di un’antica leggenda sull’esistenza del server javascript, ma questa è un’altra storia. 😉

Questo sarebbe davvero pessimo da fare perché condividere la stringa di connessione apre il tuo sito web a così tante vulnerabilità che non puoi semplicemente correggere, devi usare un metodo diverso se vuoi che sia sicuro. Altrimenti ti stai aprendo a un vasto pubblico per sfruttare il tuo sito.

servizi web

SQL 2005+ supporta i servizi Web nativi che potresti quasi utilizzare anche se non lo consiglierei, a causa dei rischi per la sicurezza che potresti incontrare. Perché ho detto quasi . Beh, Javascript non è nativo SOAP, quindi sarebbe un po ‘più complicato realizzarlo. Dovresti inviare e ricevere SOAP tramite XmlHttpRequest . Controlla google per i client SOAP Javascript.

Un codice di lavoro perfetto ..

   

Giocare con JavaScript in un HTA non ho avuto fortuna con un driver={SQL Server};... stringa di connessione, ma un DSN con nome era OK:
Ho configurato TestDSN e testato OK, quindi var strConn= "DSN=TestDSN"; ha funzionato, quindi ho continuato a sperimentare per i miei test interni e scopi di apprendimento.

Il nostro server ha diverse istanze in esecuzione, ad esempio server1 \ dev e server1 \ Test che hanno reso le cose un po ‘più complicate in quanto sono riuscito a perdere un po’ di tempo dimenticando di uscire da \ as \\ 🙂
Dopo alcuni dead-end con server=server1;instanceName=dev nelle stringhe di connessione, alla fine ho ottenuto questo per funzionare:
var strConn= "Provider=SQLOLEDB;Data Source=server1\\dev;Trusted_Connection=Yes;Initial Catalog=MyDatabase;"

Utilizzando le credenziali di Windows invece di fornire un utente / pwd, ho scoperto che un’interessante diversione stava scoprendo le sottigliezze di Integrated Security = true v Integrated Security = SSPI v Trusted_Connection=Yes – vedi Differenza tra Integrated Security = True e Integrated Security = SSPI

Attenzione che RecordCount tornerà come -1 se si utilizza il tipo predefinito adOpenForwardOnly . Se stai lavorando con piccoli set di risultati e / o non ti interessa l’intero lotto in memoria in una sola volta, usa rs.Open(strQuery, objConnection, 3); (3 = adOpenStatic) e questo fornisce un rs.RecordCount valido

Come affermato in precedenza, non dovrebbe essere eseguito utilizzando JavaScript lato client, ma esiste un framework per implementare ciò che si desidera in modo più sicuro.

Nodejs è un framework che ti consente di codificare le connessioni del server in javascript, quindi dai un’occhiata al Nodejs e probabilmente imparerai qualcosa in più sulla comunicazione con i database e sull’acquisizione dei dati di cui hai bisogno.

(scusate, questa era una risposta più generica sui back-end di SQL: non avevo letto la risposta sulla funzione WebServices di SQL Server 2005. Sebbene questa funzionalità sia ancora eseguita su HTTP piuttosto che direttamente tramite socket, quindi essenzialmente hanno costruito un mini server Web nel server di database, quindi questa risposta è ancora un’altra strada che potresti intraprendere.)

Puoi anche connetterti direttamente usando i socket (google “javascript sockets”) e direttamente a questo punto intendo usare un file Flash per questo scopo, sebbene HTML5 abbia Web Sockets come parte della specifica che credo ti permetta di fare la stessa cosa.

Alcune persone citano problemi di sicurezza, ma se hai progettato correttamente le autorizzazioni del tuo database dovresti teoricamente essere in grado di accedere al database da qualsiasi front-end, incluso OSQL, e non avere una violazione della sicurezza. Il problema di sicurezza, quindi, sarebbe se non ti stavi connettendo tramite SSL.

Infine, sono abbastanza sicuro che tutto ciò è teorico perché non credo esistano librerie JavaScript per gestire i protocolli di comunicazione per SSL o SQL Server, quindi a meno che non siate disposti a capire da soli queste cose, sarebbe meglio fare il percorso di avere un server web e un linguaggio di scripting lato server tra il browser e il database.

Non penso che sia ansible connettersi al server SQL dai javascript del client. È necessario acquisire un certo linguaggio lato server per creare applicazioni Web che possono interagire con il database e utilizzare javascript solo per rendere l’interfaccia utente migliore con cui interagire.

puoi scegliere qualsiasi linguaggio di scripting lato server in base alle tue preferenze di lingua:

  • PHP
  • ASP.Net
  • Ruby On Rails