Czy ktoś może mi podać przykładowy kod źródłowy pokazujący, jak lokalnie połączyć się z bazą danych SQL Server 2005 z poziomu JavaScript? Uczę się programowania sieciowego na moim pulpicie.
Czy muszę używać innego języka skryptowego? Zaproponuj jakieś alternatywy, jeśli je masz, ale teraz próbuję to zrobić za pomocą JavaScript. Mój SQL Server jest zainstalowany lokalnie na moim pulpicie - SQL Server Management Studio 2005 i przeglądarka IE7.
javascript
sql-server
database-connection
Ciesz się kodowaniem
źródło
źródło
Odpowiedzi:
Nie powinieneś używać klienta javascript do uzyskiwania dostępu do baz danych z kilku powodów (złe praktyki, problemy bezpieczeństwa itp.), Ale jeśli naprawdę chcesz to zrobić, oto przykład:
Lepszym sposobem połączenia się z serwerem sql byłoby użycie jakiegoś języka po stronie serwera, np. PHP, Java, .NET. Klient javascript powinien być używany tylko dla interfejsów.
Są pogłoski o starożytnej legendzie o istnieniu javascript serwera, ale to już inna historia. ;)
źródło
Byłoby to naprawdę złe, ponieważ udostępnianie ciągu połączenia otwiera witrynę na tak wiele luk, że nie można po prostu załatać, musisz użyć innej metody, jeśli chcesz, aby była bezpieczna. W przeciwnym razie otwierasz się przed ogromną publicznością, aby skorzystać z witryny.
źródło
Idealny działający kod ..
źródło
usługi internetowe
SQL 2005+ obsługuje natywne usługi WebServices, których można prawie użyć, chociaż nie sugerowałbym tego, z powodu zagrożeń bezpieczeństwa, z którymi możesz się spotkać. Dlaczego powiedziałem prawie . Cóż, JavaScript nie jest rodzimym protokołem SOAP, więc zrobienie go byłoby nieco bardziej skomplikowane. Będziesz musiał wysyłać i odbierać SOAP przez
XmlHttpRequest
. Sprawdź w Google dla klientów Javascript SOAP.źródło
Grając w JavaScript w HTA, nie miałem szczęścia z
driver={SQL Server};...
ciągiem połączenia, ale nazwana DSN była OK:skonfigurowałem TestDSN i przetestowałem OK, a potem działałem
var strConn= "DSN=TestDSN";
, więc kontynuowałem eksperymenty na potrzeby wewnętrznych testów i uczenia się.Nasz serwer ma kilka uruchomionych instancji, np. Server1 \ dev i server1 \ Test, co sprawiło, że sprawy stały się nieco trudniejsze, ponieważ udało mi się zmarnować trochę czasu, zapominając o ucieczce
\
jako\\
:)Po kilku ślepych zaułkach z
server=server1;instanceName=dev
ciągami połączeń, w końcu dostałem jeden do pracy:var strConn= "Provider=SQLOLEDB;Data Source=server1\\dev;Trusted_Connection=Yes;Initial Catalog=MyDatabase;"
Korzystając z poświadczeń systemu Windows zamiast dostarczania użytkownika / pwd, odkryłem, że ciekawą rozrywką było odkrywanie subtelności
Integrated Security = true
vIntegrated Security = SSPI
vTrusted_Connection=Yes
- patrz Różnica między zintegrowanymi zabezpieczeniami = True a zintegrowanymi zabezpieczeniami = SSPIUważaj, aby RecordCount powróci,
-1
jakbyś używał domyślnego typu adOpenForwardOnly . Jeśli pracujesz z małymi zestawami wyników i / lub nie przeszkadza ci cała pamięć w tym samym czasie, użyjrs.Open(strQuery, objConnection, 3);
(3 = adOpenStatic), a to da prawidłowy wynikrs.RecordCount
źródło
Jak powiedziano wcześniej, nie należy tego robić przy użyciu Javascript po stronie klienta, ale istnieją ramy dla bezpieczniejszego wdrażania tego, co chcesz.
Nodejs to framework, który pozwala kodować połączenia z serwerem w javascript, więc spójrz na Nodejs i prawdopodobnie dowiesz się nieco więcej o komunikacji z bazami danych i pobieraniu potrzebnych danych.
źródło
(przepraszam, to była bardziej ogólna odpowiedź na temat backendów SQL - nie przeczytałem odpowiedzi na temat funkcji WebServices programu SQL Server 2005. Chociaż ta funkcja jest nadal uruchamiana przez HTTP, a nie bezpośrednio przez gniazda, więc zasadniczo zbudowali mini serwer WWW do serwera bazy danych, więc ta odpowiedź to kolejna droga, którą możesz wybrać.)
Możesz także łączyć się bezpośrednio za pomocą gniazd (google „javascript sockets”) i bezpośrednio w tym momencie mam na myśli użycie pliku Flash do tego celu, chociaż HTML5 ma Web Sockets jako część specyfikacji, która, jak sądzę, pozwala zrobić to samo.
Niektóre osoby powołują się na problemy z bezpieczeństwem, ale jeśli poprawnie zaprojektowałeś uprawnienia do bazy danych, teoretycznie powinieneś mieć dostęp do bazy danych z dowolnego interfejsu, w tym OSQL, i nie mieć naruszenia bezpieczeństwa. Problem bezpieczeństwa dotyczyłby wtedy, gdy nie łączysz się przez SSL.
Wreszcie jestem pewien, że to wszystko jest teoretyczne, ponieważ nie sądzę, aby istniały jakieś biblioteki JavaScript do obsługi protokołów komunikacyjnych dla SSL lub SQL Server, więc jeśli nie będziesz w stanie samodzielnie rozwiązać tych problemów, byłoby to możliwe. lepiej wybrać drogę między serwerem a językiem skryptowym po stronie serwera między przeglądarką a bazą danych.
źródło
Nie sądzę, że można połączyć się z serwerem SQL z javascripts po stronie klienta. Musisz wybrać język po stronie serwera, aby budować aplikacje internetowe, które mogą wchodzić w interakcje z bazą danych i używać javascript tylko po to, aby interfejs użytkownika był lepszy do interakcji.
możesz wybrać dowolny język skryptowy po stronie serwera, w zależności od preferencji językowych:
źródło