কীভাবে মাইএসকিউএল ডাটাবেসে কানেক্ট করবেন?


88

আমি সি # প্রোগ্রামিংয়ে খুব নতুন তবে মাইএসকিউএল ডেটাবেসগুলি অ্যাক্সেস করতে সক্ষম হতে চাই (এমএস এসকিউএল এর জন্য অর্থ নেই)

তবে আমার একটি প্রশ্ন আছে; আমি জানি যে সি # অ্যাপ্লিকেশনটি বিকাশের জন্য আপনার কাছে "মাইএসকিউএল সংযোগকারী / নেট" এবং "মাইএসকিউএল ফর ভিজ্যুয়াল স্টুডিও" থাকা দরকার, তবে যে অ্যাপ্লিকেশন ইনস্টল করে সেও কি তাদের প্রয়োজনীয়তা রাখে? (এটি কি সম্ভব যে আমি কেবল প্রোগ্রামটির সাথে সংযোগকারী ডিএলএল মুক্তি দিতে পারি?)

ধন্যবাদ

সম্পাদনা: এগুলি উভয়ই কি শেষ ব্যবহারকারী বা কেবল সংযোগকারীর জন্য প্রয়োজনীয়? তাদের আর কি দরকার হবে?


4
হ্যাঁ, আপনাকে যা করতে হবে তা হ'ল আপনার প্রোগ্রামের সাথে ডিএলএল প্যাকেজ করা, আপনি যখন প্রোগ্রাম চালাবেন তখন এটি আপনার আউটপুট ডিবাগ / রিলিজ ফোল্ডারে থাকা উচিত।
ওহুমসাম

দ্রষ্টব্য: ভিজ্যুয়াল স্টুডিওর জন্য মাইএসকিউএল ভিএস 2010 ই
এনরিক সান

উপরের নোট হিসাবে @ এনরিকসানমার্টন ভার্সন 2.0 এবং মাইক্রোসফ্ট ভিজ্যুয়াল স্টুডিও 2010 এর জন্য সংস্করণ 1.2 সমর্থন সরানো হয়েছে
কৌতূহল

আপনার যদি সরাসরি এসএসএইচ-র মাধ্যমে এসএসএইচ-এর মাধ্যমে মাইএসকিউএলে সংযোগ স্থাপনের প্রয়োজন হয় তবে এখানে দেখুন 3306 স্ট্যাকওভারফ্লো
ম্যাথু লক

উত্তর:


99

ওরাকলের MySql.Dataনুগেট প্যাকেজ ইনস্টল করুন ।

using MySql.Data;
using MySql.Data.MySqlClient;

namespace Data
{
    public class DBConnection
    {
        private DBConnection()
        {
        }

        public string Server { get; set; }
        public string DatabaseName { get; set; }
        public string UserName { get; set; }
        public string Password { get; set; }

        private MySqlConnection Connection { get; set;}

        private static DBConnection _instance = null;
        public static DBConnection Instance()
        {
            if (_instance == null)
                _instance = new DBConnection();
           return _instance;
        }
    
        public bool IsConnect()
        {
            if (Connection == null)
            {
                if (String.IsNullOrEmpty(databaseName))
                    return false;
                string connstring = string.Format("Server={0}; database={1}; UID={2}; password={3}", Server, DatabaseName, UserName, Password);
                Connection = new MySqlConnection(connstring);
                Connection.Open();
            }
    
            return true;
        }
    
        public void Close()
        {
            Connection.Close();
        }        
    }
}

উদাহরণ:

var dbCon = DBConnection.Instance();
dbCon.Server = "YourServer";
dbCon.DatabaseName = "YourDatabase";
dbCon.UserName = "YourUsername";
dbCon.Password = "YourPassword";
if (dbCon.IsConnect())
{
    //suppose col0 and col1 are defined as VARCHAR in the DB
    string query = "SELECT col0,col1 FROM YourTable";
    var cmd = new MySqlCommand(query, dbCon.Connection);
    var reader = cmd.ExecuteReader();
    while(reader.Read())
    {
        string someStringFromColumnZero = reader.GetString(0);
        string someStringFromColumnOne = reader.GetString(1);
        Console.WriteLine(someStringFromColumnZero + "," + someStringFromColumnOne);
    }
    dbCon.Close();
}

4
আপনি যদি ইন্টারনেট সংযোগ সমস্যার মুখোমুখি হতে পারেন এবং আপনি এটি সংযুক্ত না হওয়া পর্যন্ত চেষ্টা করতে চান তবে এটি কাজ করবে না। if (_instance == null)লাইন মুছুন । bool result = falseডিফল্ট হিসাবেও তৈরি করুন কারণ এটি ইন্টারনেট সংযোগ সমস্যা এবং অন্যান্য অনেকের জন্য সংযুক্ত নাও হতে পারে, কেবলমাত্র ডেটাবেসের নাম সেট করা না হওয়ায়। সেক্ষেত্রে if (String.IsNullOrEmpty(databaseName)) return false;কারণ এটি অন্যথায় কেবল ব্যতিক্রম ছুঁড়ে ফেলবে এবং এটি সত্যও ফিরে আসতে পারে যা সঠিক হবে না। যাইহোক, upvated, পরিষ্কার কোড জন্য ধন্যবাদ।
বন্ধনী

4
আপনি কেন একটি ব্যক্তিগত নির্মাতার সাথে "বিজ্ঞপ্তি" রেফারেন্স রাখবেন? ( new DBConnection();এবং private DBConnection())
সোলেইল - ম্যাথিউ প্রুভোট

আপনাকে যা করতে হবে চাই connection = nullউপর DBConnection.Close()যেহেতু এটি Singleton এবং আপনি এটি পুনরায় ব্যবহার করতে পারেন
রোমান

4
এটি শুরু করার জন্য দুর্দান্ত! আমি ইতিমধ্যে কিছুটা প্রসারিত করেছি public bool IsConnect()। সংযোগটি পুনঃব্যবহারের জন্য, ifবিবৃতিটির পরে : else if (connection.State == System.Data.ConnectionState.Closed) { connection.Open(); }আপনার অ্যাপ্লিকেশনটিতে আপনি dbCon.IsConnect()পূর্বের ক্যোয়ারির পরে এটি বন্ধ করে দেওয়ার পরে আপনি আবার কিছু করতে পারেন । তাই না connection = null;মধ্যে DBConnection.Close()যেমন রোমান প্রস্তাব, অন্যথায় না করবে না কাজ পুনঃব্যবহার।
লারফোয়েড

দুর্দান্ত উত্তর, তবে আমি কীভাবে একটি নির্দিষ্ট বন্দরে সংযুক্ত করব। আমার নেটওয়ার্কটি হ'ল ডেভ, পরীক্ষা এবং লাইভ উভয় ডেটা একই সার্ভারে রয়েছে তবে বিভিন্ন পোর্টে রয়েছে। আমি কীভাবে মাত্র 1 বন্দরে সংযোগ করতে পারি।
Linux4Life531

54

আপনি প্যাকেজ হিসাবে এটি যুক্ত করতে প্যাকেজ ম্যানেজার ব্যবহার করতে পারেন এবং এটি করার সহজতম উপায়। মাইএসকিএল ডাটাবেস নিয়ে কাজ করার জন্য আপনার আর কোনও প্রয়োজন নেই।

অথবা আপনি প্যাকেজ ম্যানেজার কনসোলের নীচে কমান্ড চালাতে পারেন

PM> Install-Package MySql.Data

NUGET মাইএসকিএল.ডাটা


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

15

আপনাকে অবশ্যই এখান থেকে মাইএসকিউএল কানেকশন নেট ডাউনলোড করতে হবে ।

তারপরে আপনার MySql.Data.DLLএমএসভিজুয়াল স্টুডিওতে এটি যুক্ত করতে হবে :

  1. মেনু প্রকল্প খুলুন
  2. অ্যাড
  3. রেফারেন্স
  4. ব্রাউজ করুন C:\Program Files (x86)\MySQL\MySQL Connector Net 8.0.12\Assemblies\v4.5.2
  5. মাইএসকিউএল.ডাটা.ডিল যোগ করুন

আপনি যদি আরও জানতে চান তবে এখানে লিঙ্কের বিবরণ লিখুন

কোডটি ব্যবহার করতে আপনাকে অবশ্যই গ্রন্থাগারটি আমদানি করতে হবে:

using MySql.Data.MySqlClient;

ক্লিক ইভেন্টের মাধ্যমে মাইএসকিএল ডেটাবেজে (কোনও এসএসএল মোডে) সংযোগের সাথে একটি উদাহরণ :

using System;
using System.Windows;
using MySql.Data.MySqlClient;


namespace Deportes_WPF
{

public partial class Login : Window
{
    private MySqlConnection connection;
    private string server;
    private string database;
    private string user;
    private string password;
    private string port;
    private string connectionString;
    private string sslM;

    public Login()
    {
        InitializeComponent();

        server = "server_name";
        database = "database_name";
        user = "user_id";
        password = "password";
        port = "3306";
        sslM = "none";

        connectionString = String.Format("server={0};port={1};user id={2}; password={3}; database={4}; SslMode={5}", server, port, user, password, database, sslM);

        connection = new MySqlConnection(connectionString);
    }

    private void conexion()
    {
        try
        {
            connection.Open();

            MessageBox.Show("successful connection");

            connection.Close();
        }
        catch (MySqlException ex)
        {
            MessageBox.Show(ex.Message + connectionString);
        }
    }

    private void btn1_Click(object sender, RoutedEventArgs e)
    {
        conexion();
    }
  }

}

3

নীচের কোডটি দেখে, আমি এটি চেষ্টা করে দেখেছি: লেখার পরিবর্তে DBCon = DBConnection.Instance();আপনার লেখা উচিত DBConnection DBCon - new DBConnection();(এটি আমার পক্ষে কাজ করেছিল)

এবং পরিবর্তে MySqlComman cmd = new MySqlComman(query, DBCon.GetConnection());আপনার করা উচিত MySqlCommand cmd = new MySqlCommand(query, DBCon.GetConnection());(এটি ডি অনুপস্থিত)


0

বিবেচনা করার জন্য অন্য একটি গ্রন্থাগার হ'ল মাই এসকিএলকনেক্টর, https://mysqlconnector.net/ । মাইএসকিএল.ডাটা একটি জিপিএল লাইসেন্সের অধীনে, অন্যদিকে মাইএসকিএলকনেক্টর এমআইটি।


-5
 private void Initialize()
    {
        server = "localhost";
        database = "connectcsharptomysql";
        uid = "username";
        password = "password";
        string connectionString;
        connectionString = "SERVER=" + server + ";" + "DATABASE=" + 
        database + ";" + "U`enter code here`ID=" + uid + ";" + "PASSWORD=" + password + ";";

        connection = new MySqlConnection(connectionString);
    }


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