[javascript] 브라우저의 JavaScript에서 SQL Server 데이터베이스에 연결하는 방법은 무엇입니까?

JavaScript를 사용하여 로컬에서 SQL Server 2005 데이터베이스에 연결하는 방법을 보여주는 샘플 소스 코드를 제공 할 수 있습니까? 데스크탑에서 웹 프로그래밍을 배우고 있습니다.

아니면 다른 스크립트 언어를 사용해야합니까? 대안이 있다면 제안하십시오.하지만 지금은 JavaScript로 시도하고 있습니다. 내 SQL Server는 SQL Server Management Studio 2005 및 IE7 브라우저와 같은 데스크톱에 로컬로 설치됩니다.



답변

클라이언트 자바 스크립트를 사용하여 몇 가지 이유로 (잘못된 연습, 보안 문제 등) 데이터베이스에 액세스해서는 안되지만 실제로이 작업을 수행하려는 경우 예를 들면 다음과 같습니다.

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과 같은 서버 측 언어를 사용하는 것입니다. 클라이언트 자바 스크립트는 인터페이스에만 사용해야합니다.

그리고 서버 자바 스크립트의 존재에 관한 고대 전설에 대한 소문이 있지만 이것은 또 다른 이야기입니다. 😉


답변

연결 문자열을 공유하면 웹 사이트가 너무 많은 취약점에 노출되어 단순히 패치 할 수 없으므로 보안을 유지하려면 다른 방법을 사용해야하기 때문에 이것은 매우 나쁜 일입니다. 그렇지 않으면 사이트를 이용하기 위해 많은 청중을 열게됩니다.


답변

완벽한 작업 코드 ..

    <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를주고 받아야 XmlHttpRequest합니다. Google에서 Javascript SOAP 클라이언트를 확인하십시오.


답변

HTA에서 JavaScript를 사용하여 driver={SQL Server};...연결 문자열을 사용하면 운이 없었지만 이름이 지정된 DSN은 정상입니다. TestDSN을
설정하고 테스트 한 다음 제대로var strConn= "DSN=TestDSN"; 작동하여 자체 테스트 및 학습 목적으로 실험을 진행했습니다.

우리 서버는 server1 \ dev 와 같은 여러 인스턴스를 실행 하고 있습니다. 서버 1 \ 테스트 나는 탈출을 잊고 시간을 낭비 관리로 일이 약간 더 까다 만든 \같은 \\:
일부 데드 엔드 후 server=server1;instanceName=dev연결 문자열에서, 나는 결국 가지고이 하나는 작동합니다 :
var strConn= "Provider=SQLOLEDB;Data Source=server1\\dev;Trusted_Connection=Yes;Initial Catalog=MyDatabase;"

사용자 / 암호를 제공하는 대신 Windows 자격 증명을 사용하여 흥미로운 전환이 Integrated Security = truev Integrated Security = SSPIv 의 미묘함을 발견하는 것으로 나타났습니다 Trusted_Connection=Yes통합 보안 = True 및 통합 보안의 차이점 = SSPI 참조

-1기본 adOpenForwardOnly 유형을 사용하는 것처럼 RecordCount가 다시 표시됩니다 . 작은 결과 세트로 작업하거나 메모리의 전체 로트를 한 번에 신경 쓰지 않으면 rs.Open(strQuery, objConnection, 3); (3 = adOpenStatic)을 사용 하십시오.rs.RecordCount


답변

앞서 언급했듯이 클라이언트 측 자바 스크립트를 사용하여 수행해서는 안되지만 원하는 것을보다 안전하게 구현하기위한 프레임 워크가 있습니다.

Nodejs는 자바 스크립트로 서버 연결을 코딩 할 수있는 프레임 워크이므로 Nodejs를 살펴보고 데이터베이스와 통신하고 필요한 데이터를 얻는 방법에 대해 조금 더 배우게 될 것입니다.


답변

(죄송하지만, 이것은 SQL 백엔드에 대한보다 일반적인 답변입니다. SQL Server 2005의 WebServices 기능에 대한 답변을 읽지 못했습니다. 그러나이 기능은 여전히 ​​소켓을 통해 직접 실행되는 것이 아니라 HTTP를 통해 실행되므로 기본적으로 빌드되었습니다. 미니 웹 서버를 데이터베이스 서버에 삽입 하므로이 답변은 여전히가는 또 다른 경로입니다.)

소켓 (google “javascript sockets”)을 사용하여 직접 연결할 수도 있으며이 시점에서 직접 플래시 파일을 사용하는 것이 좋습니다 .HTML5에는 동일한 기능을 수행 할 수 있다고 생각하는 사양의 일부로 웹 소켓이 있습니다.

어떤 사람들은 보안 문제를 인용하지만 데이터베이스 권한을 올바르게 설계했다면 이론적으로 OSQL을 포함한 모든 프런트 엔드에서 데이터베이스에 액세스 할 수 있어야하며 보안 침해가 발생하지 않아야합니다. 그러면 SSL을 통해 연결하지 않은 경우 보안 문제가 발생합니다.

마지막으로 SSL 또는 SQL Server의 통신 프로토콜을 처리하기위한 JavaScript 라이브러리가 없다고 생각하기 때문에 이것이 이론적이라고 확신합니다. 따라서 이러한 것들을 스스로 알아낼 수 없다면 브라우저와 데이터베이스 사이에 웹 서버 및 서버 측 스크립팅 언어를 사용하는 것이 좋습니다.