ব্রাউজারে জাভাস্ক্রিপ্ট থেকে এসকিউএল সার্ভার ডাটাবেসের সাথে কীভাবে সংযুক্ত করবেন?


285

স্থানীয়ভাবে জাভাস্ক্রিপ্ট থেকে এসকিউএল সার্ভার 2005 ডাটাবেসের সাথে কীভাবে সংযুক্ত করতে হয় তা দেখিয়ে কেউ আমাকে কিছু নমুনা উত্স কোড দিতে পারে? আমি আমার ডেস্কটপে ওয়েব প্রোগ্রামিং শিখছি।

অথবা আমার অন্য কোনও স্ক্রিপ্টিং ভাষা ব্যবহার করা দরকার? আপনার কাছে কিছু বিকল্প থাকলে তা প্রস্তাব দিন, তবে আমি এখন জাভাস্ক্রিপ্ট দিয়ে এটি করার চেষ্টা করছি। আমার এসকিউএল সার্ভার স্থানীয়ভাবে আমার ডেস্কটপে ইনস্টল করা আছে - এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিও 2005 এবং আই 7 ব্রাউজার।


16
অবশ্যই আপনি এটি করার পরামর্শ দিচ্ছেন না তবে এর থেকে কী উত্তর আসতে পারে তা দেখে ভাল লাগল।
TheTXI

2
আমি নোড.জেএস (সার্ভার-সাইড জাভাস্ক্রিপ্টের প্রয়োগ) থেকে একটি ডাটাবেসে সংযোগ করতে চাই এবং আমি এখানে পৌঁছেছি। কেউ কি জানেন যে এর জন্য আমার কোথায় যাওয়া উচিত?
রায় টিঙ্কার

2
@ রয়টাইঙ্কার: নোড-পোস্টগ্রিস এবং নোড-মাইএসকিএল রয়েছে।
জানুস ট্রয়লসন

1
প্রকৃতপক্ষে কোনও নিখরচায় ডাটাবেস রয়েছে যা আপনি ব্যবহার করতে পারেন?

1
আপনি নোড.জেএস এবং জাভাস্ক্রিপ্ট ব্যবহার করে একটি আরআরটি ব্যাকএন্ড লিখতে এবং এটি ক্লায়েন্টের পাশের জাভাস্ক্রিপ্টের সাথে ইন্টারফেস করতে পারেন।
ফেজ ভ্রাস্টা

উত্তর:


701

বিভিন্ন কারণে (খারাপ অভ্যাস, সুরক্ষা সমস্যা ইত্যাদি) জন্য ডাটাবেসগুলি অ্যাক্সেস করতে আপনার ক্লায়েন্ট জাভাস্ক্রিপ্ট ব্যবহার করা উচিত নয় তবে আপনি যদি সত্যিই এটি করতে চান তবে এখানে একটি উদাহরণ:

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; 

স্কেল সার্ভারের সাথে সংযুক্ত হওয়ার আরও ভাল উপায় হ'ল পিএইচপি, জাভা,। নেট, অন্যদের মধ্যে কিছু সার্ভার সাইড ভাষা ব্যবহার করা। ক্লায়েন্ট জাভাস্ক্রিপ্ট কেবল ইন্টারফেসের জন্য ব্যবহার করা উচিত।

এবং সার্ভার জাভাস্ক্রিপ্টের অস্তিত্ব সম্পর্কে একটি প্রাচীন কিংবদন্তীর গুজব রয়েছে, তবে এটি অন্য গল্প। ;)


323
অভিনন্দন এখানে বেশিরভাগ একমাত্র ব্যক্তি যিনি আসলে দেখায় যে এটি সম্ভব (যদিও প্রস্তাবিত নয়)।
টিটিএক্সআই

6
যদিও এটি ওপির সেট আপে কাজ করতে পারে - তিনি বলেছিলেন যে তিনি "ওয়েব প্রোগ্রামিং" শিখতে চেয়েছিলেন - এবং কম সুরক্ষিত পরিবেশে ইন্টারনেট এক্সপ্লোরার ওয়েব প্রোগ্রামিং নয়।
কোয়ান্টিন

27
আমি বুঝতে পারি না কেন এই মন্তব্যটি নেতিবাচক ভোট হিসাবে যোগ্যতা অর্জন করেছে। আমি কীভাবে এটি করব তা ব্যাখ্যা করছি তবে তাকে এটি ব্যবহার না করার জন্য বলি।
ফ্যাবিও ভিনিসিয়াস বাইদার

26
ফাইবাইন্ডার: কিছু লোকেরা এটিকে ভোট দেবেন কারণ তারা মনে করেন যে ডাটাবেস সংযোগের কোনও চেষ্টা এবং জাভাস্ক্রিপ্ট থেকে জিজ্ঞাসাবাদ করা একটি বড় সংখ্যা নেই (যদিও আপনি এটি পরিষ্কারভাবে বলেছেন)। আমি যদি আপনি হয়ে থাকি তবে আপনি যে দুটি বা নেতিবাচক ভোট পেয়েছেন তাতে আমি আপত্তি করব না এবং কেবলমাত্র উত্থাপিত প্রশ্নের উত্তর দেয়ার কারণেই এটি পাবে এমন বহু আপত্তিকর ভোট উপভোগ করব।
TheTXI

36
তবে সম্ভবত এটি লক্ষ করা উচিত যে এই উত্তরটি সম্ভবত অ-আই-আই ব্রাউজারগুলির জন্য অ্যাক্টিভ্যাক্স ব্যবহারের কারণে কার্যকর হবে না (যদিও মূল পোস্টারটি আইই ব্যবহারের বিষয়ে স্পষ্ট ছিল)।
TheTXI

25

এটি করা সত্যিই খারাপ হবে কারণ আপনার সংযোগের স্ট্রিং ভাগ করে নেওয়া আপনার ওয়েবসাইটকে এতগুলি দুর্বলতার জন্য উন্মুক্ত করে যা আপনি কেবল প্যাচ করতে পারবেন না, আপনি যদি এটি সুরক্ষিত রাখতে চান তবে আপনাকে একটি অন্য পদ্ধতি ব্যবহার করতে হবে। অন্যথায় আপনি আপনার সাইটের সুবিধা গ্রহণের জন্য বিশাল দর্শকদের কাছে যাচ্ছেন।


7
আপভোট করুন কারণ আপনি আসলে এটি কেন খারাপ ধারণা বলে ব্যাখ্যা করেছেন
বিপরীত প্রকৌশলী

প্রযুক্তিগত সমাধানের চেয়ে সুরক্ষার টিপস আরও ব্যবহারযোগ্য এবং গুরুত্বপূর্ণ
সাবার তাবতাবই ইয়াজদি

9
ডাউন ভোট দিন কারণ ওপি জিজ্ঞাসা করে না যে এটি ভাল বা খারাপ অনুশীলন, তারা কীভাবে তা জিজ্ঞাসা করেছিল। এটি সত্যিকারের উত্তর বরাবর কেন খারাপ ধারণা হতে পারে তা আপনি সন্নিবেশ করতে পারেন, তবে কেবল এটি বলা খারাপ ধারণা এটির নিজের উত্তর হওয়ার প্রাপ্য নয়, এটি সেরা মন্তব্য।
Wobbles

1
যদি আপনি কেবলমাত্র একটি প্রাইসেস সার্ভারের সাথে ইন্টারফেসের জন্য সুরক্ষিত ফায়ারওয়ালের পিছনে কিছু লিখছেন, তবে কি এটি এখনও খারাপ?
ব্রায়ান ব্রাইস

আমি ভুল হলে আমাকে সংশোধন করুন তবে প্রদত্ত ব্যবহারকারী যদি কেবল পঠিত হয় এবং আপনি কোন টেবিলগুলিতে অ্যাক্সেস করতে পারবেন তা পরিচালনা করেন, কিছু পরিবর্তন না হওয়া পর্যন্ত এটি প্রযুক্তিগতভাবে নিরাপদ, না? পুরো ডিবিতে সংবেদনশীল তথ্য না থাকলে আমি আপনাকে পরামর্শ দেব না। অন্য ডিবিতে সংবেদনশীল তথ্য রাখতে পারে। সংবেদনশীল তথ্য না দিয়ে স্থির ওয়েবসাইটের জন্য এটি দরকারী বলে আমি কল্পনা করতে পারি। যদি লেখকের দরকার হয় তবে অন্য সার্ভারে oautj2 async ব্যবহার করতে পারে।
জো ফ্ল্যাক

11

একটি নিখুঁত কার্যকারী কোড ..

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

10

ওয়েব সার্ভিস

এসকিউএল 2005+ আপনি যে জাতীয় সুরক্ষার ঝুঁকির মুখোমুখি হতে পারেন তার কারণ হিসাবে আপনি এটি প্রায়শই ব্যবহার করতে পারতেন এমন নেটিভ ওয়েব সার্ভিসগুলিকে সমর্থন করে । আমি কেন প্রায় বললাম । ওয়েল জাভাস্ক্রিপ্ট সোপ নেটিভ নয়, তাই এটি তৈরি করা কিছুটা জটিল হবে। আপনাকে এসওএপি মাধ্যমে প্রেরণ এবং গ্রহণ করতে হবে XmlHttpRequest। জাভাস্ক্রিপ্ট এসওএপি ক্লায়েন্টদের জন্য গুগল চেক করুন।


5

এইচটিএতে জাভাস্ক্রিপ্ট নিয়ে খেলতে আমার কোনও driver={SQL Server};...সংযোগের স্ট্রিংয়ের সাথে ভাগ্য হয়নি , তবে একটি নামকৃত ডিএসএন ঠিক ছিল:
আমি টেস্টডিএসএন স্থাপন করেছি এবং এটি ঠিক আছে, এবং পরে var strConn= "DSN=TestDSN";কাজ করেছে, তাই আমি আমার অভ্যন্তরীণ পরীক্ষার এবং শেখার উদ্দেশ্যে পরীক্ষা চালিয়েছি।

আমাদের সার্ভার বিভিন্ন চলমান দৃষ্টান্ত আছে, যেমন server1 \ দেব এবং server1 \ টেস্ট যা আমি পালিয়ে যেতে বিস্মরণ কিছু সময় নষ্ট করতে পরিচালিত কিছু সামান্য বেশি চতুর প্রণীত \যেমন \\:)
সঙ্গে কিছু মৃত শেষ হয়ে যাওয়ার পরও server=server1;instanceName=devএই সংযোগ স্ট্রিং, আমার শেষ পর্যন্ত পেয়েছিলাম কাজ করার জন্য এক:
var strConn= "Provider=SQLOLEDB;Data Source=server1\\dev;Trusted_Connection=Yes;Initial Catalog=MyDatabase;"

উইন্ডোজ শংসাপত্রগুলি ব্যবহারকারীর / পিডাব্লুডির সরবরাহের পরিবর্তে, আমি দেখতে পেলাম যে একটি আকর্ষণীয় বিবর্তনIntegrated Security = true v Integrated Security = SSPIv এর সূক্ষ্মতা আবিষ্কার করেছে Trusted_Connection=Yes- দেখুন সংহত সুরক্ষা = সত্য এবং সংহত সুরক্ষা = এসএসপিআইয়ের মধ্যে পার্থক্য দেখুন

সাবধান থাকুন যে রেকর্ডকাউন্টটি আবার ফিরে আসবে -1যেন ডিফল্ট অ্যাডোপেনফোরওয়ার্ডলি টাইপ ব্যবহার করে । আপনি যদি ছোট রেজাল্ট সেট নিয়ে কাজ করছেন এবং / বা একবারে পুরোটা মনে রাখবেন না, rs.Open(strQuery, objConnection, 3); (3 = অ্যাডওপেনস্ট্যাটিক) ব্যবহার করুন এবং এটি একটি বৈধ দেয়rs.RecordCount


4

যেমনটি আগে বলা হয়েছিল এটি ক্লায়েন্ট সাইড জাভাস্ক্রিপ্ট ব্যবহার করে করা উচিত নয় তবে আপনি কী আরও সুরক্ষিত চান তা বাস্তবায়নের জন্য একটি কাঠামো রয়েছে।

নোডেজ একটি ফ্রেমওয়ার্ক যা আপনাকে জাভাস্ক্রিপ্টে সার্ভার সংযোগগুলি কোড করার অনুমতি দেয় তাই নোডেজগুলিতে নজর রাখুন এবং আপনি সম্ভবত ডাটাবেসের সাথে যোগাযোগ এবং আপনার প্রয়োজনীয় ডেটা দখল সম্পর্কে আরও কিছুটা শিখবেন।


3

(দুঃখিত, এটি এসকিউএল ব্যাকেন্ডস সম্পর্কে আরও জেনারেল উত্তর ছিল - এসকিউএল সার্ভার 2005 এর ওয়েব সার্ভিস বৈশিষ্ট্য সম্পর্কে আমি উত্তরটি পড়িনি। যদিও, এই বৈশিষ্ট্যটি এখনও সরাসরি সকেটের মাধ্যমে না হয়ে এইচটিটিপি-র মাধ্যমে চালিত হয়, তাই মূলত তারা তৈরি করেছে ডাটাবেস সার্ভারে একটি মিনি ওয়েব সার্ভার, সুতরাং এই উত্তরটি আপনি নিতে পারেন এমন আরও একটি রুট))

আপনি সকেট (গুগল "জাভাস্ক্রিপ্ট সকেট") ব্যবহার করে সরাসরি সংযোগ করতে পারেন এবং সরাসরি এই মুহূর্তে আমি এই উদ্দেশ্যে একটি ফ্ল্যাশ ফাইল ব্যবহার করতে চাইছি, যদিও এইচটিএমএল 5 এর ওয়েব সকেট রয়েছে সেই অনুমানের অংশ হিসাবে যা আমি বিশ্বাস করি যে আপনাকে একই কাজ করতে দিন।

কিছু লোক সুরক্ষার সমস্যাগুলি উদ্ধৃত করে, তবে আপনি যদি আপনার ডাটাবেস অনুমতিগুলি সঠিকভাবে ডিজাইন করেন তবে তাত্ত্বিকভাবে আপনাকে ওএসকিউএল সহ কোনও সামনের প্রান্ত থেকে ডাটাবেস অ্যাক্সেস করতে সক্ষম হওয়া উচিত এবং সুরক্ষা লঙ্ঘন না করা উচিত। সিকিউরিটি ইস্যুটি হ'ল যদি আপনি এসএসএলের মাধ্যমে সংযুক্ত না হন।

শেষ পর্যন্ত, যদিও আমি নিশ্চিত যে এটি সমস্ত তাত্ত্বিক কারণ আমি বিশ্বাস করি না যে এসএসএল বা এসকিউএল সার্ভারের জন্য যোগাযোগ প্রোটোকলগুলি পরিচালনা করার জন্য কোনও জাভাস্ক্রিপ্ট লাইব্রেরি রয়েছে, সুতরাং আপনি যদি নিজেরাই এই বিষয়গুলি নিজেরাই বের করতে ইচ্ছুক না হন তবে তা হবেনা ব্রাউজার এবং ডাটাবেসের মধ্যে একটি ওয়েব সার্ভার এবং সার্ভার-সাইড স্ক্রিপ্টিং ভাষা থাকার পথে যেতে আরও ভাল।


2
ভাল বলেছ. কোনও ক্লায়েন্টের সরাসরি ডেটাবেস অ্যাক্সেস করার ক্ষেত্রে কোনও দোষ নেই (যেমন তৈরি প্রতিটি পুরু ক্লায়েন্ট) এবং ওয়েব সার্ভিসের মাধ্যমে নয়। আপনি যদি উইন্ডোজ প্রমাণীকরণ এবং একটি ভাল সুরক্ষা স্তর ব্যবহার করেন তবে এতে কোনও ভুল নেই
নিক.এমসিডার্মাইড

1

আমি মনে করি না আপনি ক্লায়েন্টের পাশের জাভাস্ক্রিপ্ট থেকে এসকিউএল সার্ভারের সাথে সংযোগ করতে পারবেন। ওয়েব অ্যাপ্লিকেশন তৈরি করতে আপনাকে কিছু সার্ভার সাইড ল্যাঙ্গুয়েজ বেছে নিতে হবে যা আপনার ডাটাবেসের সাথে ইন্টারঅ্যাক্ট করতে পারে এবং জাভাস্ক্রিপ্টটি কেবল আপনার ইউজার ইন্টারফেসের সাথে ইন্টারঅ্যাক্ট করার জন্য আরও ভাল করতে পারে।

আপনার ভাষা পছন্দ অনুসারে আপনি যে কোনও সার্ভার সাইড স্ক্রিপ্টিং ভাষা নিতে পারেন:

  • পিএইচপি
  • ASP.Net
  • রুবেল অন রেল

1
আমি খুঁজে পেতে পারি এটির একমাত্র সত্য উত্তর। আমার কী কী এএসপি নেটনার তদন্ত করা উচিত? মাইক্রোসফ্ট ড্রাইভারের পাশাপাশি আমার আর কী দরকার?
রাচেল

আপনি সম্ভাব্যভাবে ADO.Net বা সত্তা ফ্রেমওয়ার্ক / লিনকটোসকিউএল ব্যবহার করতে পারেন - এগুলির আসলে কোনওটি।
বিক্রম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.