programing

브라우저의 JavaScript에서 SQL Server 데이터베이스에 연결하는 방법

prostudy 2022. 9. 11. 15:22
반응형

브라우저의 JavaScript에서 SQL Server 데이터베이스에 연결하는 방법

JavaScript에서 SQL Server 2005 데이터베이스로 로컬로 접속하는 방법을 보여주는 샘플 소스 코드를 알려 주실 수 있습니까?나는 바탕화면에서 웹 프로그래밍을 배우고 있다.

아니면 다른 스크립트 언어를 사용해야 합니까?다른 대안이 있다면 제안해 주세요.하지만 저는 지금 자바스크립트로 그것을 시도하고 있습니다.SQL Server는 데스크톱(SQL Server Management Studio 2005 및 IE7 브라우저)에 로컬로 설치됩니다.

클라이언트 javascript를 사용하여 데이터베이스에 액세스해서는 안 됩니다(나쁜 관행, 보안 문제 등).이러한 예를 다음에 제시하겠습니다.

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; 

SQL 서버에 접속하는 더 좋은 방법은 PHP, Java 등의 서버 사이드 언어를 사용하는 것입니다.NET, 그 중에서도.클라이언트 javascript는 인터페이스에만 사용해야 합니다.

서버 Javascript의 존재에 대한 고대 전설이 있다는 소문도 있지만, 이것은 또 다른 이야기다.;)

연결 문자열을 공유하면 웹 사이트가 너무 많은 취약성에 노출되어 단순히 패치를 적용할 수 없기 때문에 보안을 유지하려면 다른 방법을 사용해야 합니다.그렇지 않으면 많은 사용자에게 개방되어 사이트를 활용할 수 있습니다.

완벽한 작동 코드..

    <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>

웹 서비스

SQL 2005+는 보안 위험이 있기 때문에 거의 사용할 수 없는 네이티브 웹 서비스를 지원합니다.내가 왜 거의라고 했지?Javascript는 SOAP 네이티브가 아니기 때문에 실제로 만드는 것은 조금 복잡합니다.SOAP을 송수신해야 합니다.XmlHttpRequestJavascript SOAP입니다.

  • http://msdn.microsoft.com/en-us/library/ms345123.aspx - SQL 네이티브 웹 서비스
  • http://www.google.com/search?q=javascript+soap - Javascript SOAP 클라이언트에 대한 Google 결과

에서 JavaScript를 보면 HTA JavaScript를 할 수 .driver={SQL Server};...였습니다.
TestDSN을 셋업하여 정상적으로 테스트한 후var strConn= "DSN=TestDSN";효과가 있었기 때문에 사내 테스트와 학습 목적으로 실험을 계속했습니다.

서버에는 server1\devserver1\ 등 여러 인스턴스가 실행되고 있습니다.가 탈출하는 것을 잊어버리는 데 시간을 허비할 수 있었기 때문에 상황을 조금 더 까다롭게 만들었던 테스트\~하듯이\\:)
이 막다른 골목에 몰린 후server=server1;instanceName=dev접속 스트링에서, 나는 결국 이것을 작동시켰다.
var strConn= "Provider=SQLOLEDB;Data Source=server1\\dev;Trusted_Connection=Yes;Initial Catalog=MyDatabase;"

사용자/pwd를 제공하지 않고 Windows credential을 사용하면서 흥미로운 전환은 다음과 같은 미묘함을 발견하는 것이었습니다.Integrated Security = true v Integrated Security = SSPI v Trusted_Connection=Yes- 통합 보안 = True와 통합 보안 = SSPI의 차이 참조

Record Count는 다음과 같이 반환됩니다.-1기본 adOpenForwardOnly 유형을 사용하는 경우.작은 결과 세트를 사용하는 경우 및/또는 메모리의 모든 것을 동시에 사용하는 경우rs.Open(strQuery, objConnection, 3); (3=adOpenStatic) 그러면 유효합니다.rs.RecordCount

앞서 말한 바와 같이 클라이언트 측 Javascript를 사용하면 안 되지만, 원하는 것을 보다 안전하게 구현하기 위한 프레임워크가 있습니다.

Nodejs는 javascript로 서버 접속을 코드화할 수 있는 프레임워크이므로 Nodejs를 살펴보면 데이터베이스와의 통신 및 필요한 데이터 수집에 대해 조금 더 배울 수 있을 것입니다.

클라이언트측 javascript에서 SQL Server에 접속할 수 없을 것 같습니다.데이터베이스와 상호작용할 수 있는 웹 어플리케이션을 구축하기 위해 서버 사이드 언어를 선택해야 하며 사용자 인터페이스를 보다 효과적으로 상호작용할 수 있도록 javascript를 사용해야 합니다.

언어 설정에 따라 서버 측 스크립트 언어를 선택할 수 있습니다.

  • PHP
  • ASP.Net
  • Ruby On Rails

(죄송합니다.SQL 백엔드에 대한 일반적인 답변이었습니다.SQL Server 2005의 Web Services 기능에 대한 답변은 아직 읽지 않았습니다.단, 이 기능은 소켓을 통해 직접 실행되는 것이 아니라 HTTP를 통해 실행되므로 기본적으로 데이터베이스 서버에 미니 웹 서버를 구축한 것이므로 이 답변은 사용자가 선택할 수 있는 다른 경로입니다.)

소켓(구글 "javascript sockets")을 사용하여 직접 연결할 수도 있고, 이 시점에서는 플래시 파일을 직접 사용할 수도 있지만 HTML5에는 Web Sockets가 포함되어 있기 때문에 동일한 작업을 수행할 수 있다고 생각합니다.

보안상의 문제를 거론하는 사람도 있습니다만, 데이터베이스 권한을 올바르게 설계했다면 이론적으로는 OSQL을 포함한 모든 프런트 엔드에서 데이터베이스에 액세스 할 수 있어 보안 침해가 발생하지 않습니다.보안 문제는 SSL을 통해 연결하지 않은 경우입니다.

마지막으로 SSL 또는 SQL Server 통신 프로토콜을 처리하기 위한 JavaScript 라이브러리는 존재하지 않기 때문에 브라우저 간에 웹 서버와 서버 측 스크립트 언어를 사용하는 경로를 선택하는 것이 좋습니다.및 데이터베이스입니다.

언급URL : https://stackoverflow.com/questions/857670/how-to-connect-to-sql-server-database-from-javascript-in-the-browser

반응형