Bagaimana untuk terhubung ke database SQL Server dari JavaScript di browser?

Siapa pun dapat memberikan saya beberapa contoh source code yang menunjukkan bagaimana untuk menghubungkan ke database SQL Server 2005 dari JavaScript lokal? Saya belajar pemrograman web di desktop saya.

Atau apakah saya harus menggunakan bahasa scripting? Menyarankan beberapa alternatif jika anda memiliki mereka, tapi sekarang saya mencoba untuk melakukannya dengan JavaScript. My SQL Server diinstal secara lokal pada desktop saya — SQL Server Management Studio 2005 dan IE7 browser.

Mengomentari pertanyaan (6)
Larutan

Seharusnya kau´t menggunakan klien javascript untuk mengakses database untuk beberapa alasan (praktek yang buruk, masalah keamanan, dll) tapi jika anda benar-benar ingin melakukan ini, berikut adalah contohnya:

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; 

Cara yang lebih baik untuk menghubungkan ke sql server akan menggunakan beberapa bahasa server side seperti PHP, Java, .NET, antara lain. Klien javascript harus digunakan hanya untuk interface.

Dan ada rumor dari sebuah legenda kuno tentang keberadaan server javascript, tapi ini adalah cerita lain. ;)

Komentar (16)

Ini akan menjadi benar-benar buruk untuk dilakukan karena berbagi koneksi string membuka website anda untuk begitu banyak kerentanan yang dapat anda't hanya menambal, anda harus menggunakan metode yang berbeda jika anda ingin menjadi aman. Jika tidak, anda membuka diri untuk audiens yang besar untuk mengambil keuntungan dari situs anda.

Komentar (5)

Kerja yang sempurna kode..

    <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>
Komentar (0)

Layanan Web

SQL 2005+ mendukung native web services yang anda bisa hampir gunakan meskipun saya tidak't menunjukkan itu, karena resiko keamanan yang mungkin anda hadapi. Mengapa saya katakan hampir. Nah Javascript tidak SOAP asli, jadi itu akan menjadi sedikit lebih rumit untuk benar-benar membuatnya. Anda'd memiliki untuk mengirim dan menerima SABUN melalui XmlHttpRequest. Cek google untuk Javascript SABUN klien.

Komentar (0)

Bermain dengan JavaScript di HTA saya tidak memiliki keberuntungan dengan driver={SQL Server};... string koneksi, tetapi yang bernama DSN OK : Aku mengatur TestDSN dan diuji OK, dan kemudian var strConn= "DSN=TestDSN"; bekerja, jadi aku terus bereksperimen untuk pengujian dan tujuan pembelajaran.

Server kami memiliki beberapa contoh yang berjalan, misalnya server1\dev dan server1\Test yang membuat hal-hal sedikit lebih rumit karena saya berhasil membuang-buang waktu lupa untuk escape \ sebagai \\ :) Setelah beberapa mati-berakhir dengan server=server1;instanceName=dev dalam string koneksi, akhirnya saya punya yang satu ini untuk bekerja : var strConn= "Provider=SQLOLEDB;Data Source=server1\\dev;Trusted_Connection=Ya;Initial Catalog=MyDatabase;"

Menggunakan kredensial Windows daripada memasok user/pwd, saya menemukan pengalihan menarik adalah menemukan seluk-beluk Integrated Security = true v Integrated Security = SSPI v Trusted_Connection=Ya - lihat https://stackoverflow.com/questions/1229691/difference-between-integrated-security-true-and-integrated-security-sspi

Berhati-hatilah bahwa RecordCount akan datang kembali sebagai -1 jika menggunakan default adOpenForwardOnly jenis. Jika anda're bekerja dengan kecil hasil set dan/atau don't pikiran seluruh banyak dalam memori sekaligus, gunakan rs.Terbuka(strQuery, objConnection, 3); (3=adOpenStatic) dan ini memberikan sah rs.RecordCount

Komentar (0)

Seperti yang dinyatakan sebelumnya seharusnya't dapat dilakukan dengan menggunakan client side Javascript tapi ada's sebuah kerangka kerja untuk menerapkan apa yang anda ingin lebih aman.

Nodejs adalah sebuah kerangka kerja yang memungkinkan anda untuk kode koneksi server dalam javascript sehingga memiliki melihat ke Nodejs dan anda'll mungkin belajar sedikit lebih banyak tentang berkomunikasi dengan database dan mengambil data yang anda butuhkan.

Komentar (0)

(maaf, ini yang lebih generik jawaban tentang SQL backend-saya tidak't baca jawaban tentang SQL Server 2005's web services fitur. Meskipun, fitur ini masih berjalan di atas HTTP daripada lebih lanjut langsung melalui soket, jadi pada dasarnya mereka've dibangun mini server web ke server basis data, jadi jawaban ini masih rute lain yang bisa anda ambil.)

Anda juga dapat menghubungkan langsung menggunakan soket (google "javascript soket") dan dengan langsung pada titik ini saya berarti menggunakan file Flash untuk tujuan ini, meskipun HTML5 telah Sockets Web sebagai bagian dari spec yang saya percaya membiarkan anda melakukan hal yang sama.

Beberapa orang menyebutkan masalah keamanan, tetapi jika anda merancang database anda permissions dengan benar, anda harus secara teoritis dapat mengakses database dari setiap ujung depan, termasuk OSQL, dan tidak memiliki pelanggaran keamanan. Masalah keamanan, maka, akan jika anda tidak't menghubungkan melalui SSL.

Akhirnya, meskipun, saya'm cukup yakin ini semua teoritis karena aku don't percaya setiap perpustakaan JavaScript yang ada untuk penanganan komunikasi protokol SSL atau SQL Server, jadi kecuali anda're bersedia untuk mengetahui hal-hal ini pada diri sendiri itu'a akan lebih baik untuk pergi rute yang memiliki web server dan server-side scripting bahasa di antara browser dan database.

Komentar (1)

Saya tidak berpikir anda dapat menghubungkan ke SQL server dari client side javascript. Anda perlu untuk mengambil beberapa bahasa server side untuk membangun aplikasi web yang dapat berinteraksi dengan database anda dan menggunakan javascript hanya untuk membuat user interface yang lebih baik untuk berinteraksi dengan.

anda dapat mengambil setiap server side scripting bahasa yang didasarkan pada preferensi bahasa anda :

  • PHP
  • ASP.Net
  • Ruby On Rails
Komentar (2)