gratis - javascript html
¿Cómo conectarse a la base de datos SQL Server desde JavaScript en el navegador? (8)
¿Alguien puede darme un código fuente de muestra que muestre cómo conectarse a una base de datos de SQL Server 2005 desde JavaScript localmente? Estoy aprendiendo programación web en mi escritorio.
¿O necesito usar algún otro lenguaje de scripting? Sugiera algunas alternativas si las tiene, pero ahora estoy intentando hacerlo con JavaScript. Mi SQL Server está instalado localmente en mi escritorio: SQL Server Management Studio 2005 y el navegador IE7.
servicios web
SQL 2005+ admite servicios web nativos que casi podría usar, aunque no lo recomendaría, debido a los riesgos de seguridad que puede enfrentar. ¿Por qué dije casi ? Bueno, Javascript no es SOAP nativo, por lo que sería un poco más complicado hacerlo en realidad. Tendría que enviar y recibir SOAP a través de XmlHttpRequest
. Compruebe google para los clientes de Javascript SOAP.
- http://msdn.microsoft.com/en-us/library/ms345123.aspx - Servicios Web nativos de SQL
- http://www.google.com/search?q=javascript+soap - Resultados de Google para clientes SOAP de Javascript
(Lo siento, esta fue una respuesta más genérica sobre los backends de SQL. No había leído la respuesta sobre la función de servicios web de SQL Server 2005. Aunque esta función aún se ejecuta a través de HTTP en lugar de hacerlo más directamente a través de sockets, por lo que esencialmente se han creado un mini servidor web en el servidor de base de datos, por lo que esta respuesta es otra ruta que podría tomar.)
También puede conectarse directamente usando sockets (google "javascript sockets") y directamente en este punto me refiero a usar un archivo Flash para este propósito, aunque HTML5 tiene Web Sockets como parte de la especificación que creo que le permite hacer lo mismo.
Algunas personas citan problemas de seguridad, pero si diseñó los permisos de su base de datos correctamente, en teoría debería poder acceder a la base de datos desde cualquier extremo, incluido OSQL, y no tener una violación de seguridad. El problema de seguridad, entonces, sería si no se estuviera conectando a través de SSL.
Finalmente, sin embargo, estoy bastante seguro de que todo esto es teórico porque no creo que existan bibliotecas de JavaScript para manejar los protocolos de comunicaciones para SSL o SQL Server, así que a menos que esté dispuesto a resolver estas cosas usted mismo sería mejor ir por la ruta de tener un servidor web y un lenguaje de scripts del lado del servidor entre el navegador y la base de datos.
Como se indicó anteriormente, no debe hacerse usando Javascript del lado del cliente, pero hay un marco para implementar lo que quiere de forma más segura.
Nodejs es un marco que le permite codificar conexiones de servidor en javascript, así que eche un vistazo a Nodejs y probablemente aprenderá un poco más sobre la comunicación con bases de datos y la obtención de datos que necesita.
Jugando con JavaScript en una HTA No tuve suerte con un driver={SQL Server};...
cadena de conexión, pero un DSN con nombre estaba bien:
Configuré TestDSN y probé OK, y luego var strConn= "DSN=TestDSN";
Trabajé, así que seguí experimentando para mis pruebas internas y con fines de aprendizaje.
Nuestro servidor tiene varias instancias en ejecución, por ejemplo, server1 / dev y server1 / Test, lo que hizo que las cosas fueran un poco más difíciles, ya que pude perder un tiempo olvidándome de escapar de /
as //
:)
Después de algunos callejones sin salida con server=server1;instanceName=dev
en las cadenas de conexión, finalmente conseguí que éste funcionara:
var strConn= "Provider=SQLOLEDB;Data Source=server1//dev;Trusted_Connection=Yes;Initial Catalog=MyDatabase;"
Al usar las credenciales de Windows en lugar de proporcionar un usuario / pwd, descubrí que una desviación interesante era descubrir las sutilezas de Integrated Security = true
v Integrated Security = SSPI
v Trusted_Connection=Yes
- ver Diferencia entre Seguridad Integrada = Verdadera y Seguridad Integrada = SSPI
Tenga en cuenta que RecordCount volverá a ser -1
si utiliza el tipo predeterminado adOpenForwardOnly . Si está trabajando con conjuntos de resultados pequeños y / o no le importa todo el lote en la memoria al mismo tiempo, use rs.Open(strQuery, objConnection, 3);
(3 = adOpenStatic) y esto da un rs.RecordCount
válido
No creo que pueda conectarse al servidor SQL desde los javascripts del lado del cliente. Debe elegir un idioma del lado del servidor para crear aplicaciones web que puedan interactuar con su base de datos y usar javascript solo para hacer que la interfaz de usuario sea mejor para interactuar.
puede seleccionar cualquier lenguaje de script del lado del servidor según su preferencia de idioma:
- PHP
- ASP.Net
- Ruby on Rails
No debe usar el javascript del cliente para acceder a las bases de datos por varias razones (mala práctica, problemas de seguridad, etc.) pero si realmente desea hacer esto, aquí hay un ejemplo:
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;
Una mejor manera de conectarse a un servidor SQL sería usar algún lenguaje del lado del servidor como PHP, Java, .NET, entre otros. El javascript del cliente se debe utilizar solo para las interfaces.
Y hay rumores de una antigua leyenda sobre la existencia de un servidor javascript, pero esta es otra historia. ;)
Sería muy malo hacerlo porque compartir su cadena de conexión abre su sitio web a tantas vulnerabilidades que no puede simplemente parchear, tiene que usar un método diferente si desea que sea seguro. De lo contrario, se está abriendo a una gran audiencia para aprovechar su sitio.
Un código de trabajo perfecto.
<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) + " ");
document.write(rs.fields(1) + " ");
document.write(rs.fields(2) + " ");
document.write(rs.fields(3) + " ");
document.write(rs.fields(4) + "<br/>");
rs.movenext();
}
</script>