MySQL डाटाबेस से कैसे जुड़ें?


85

मैं C # प्रोग्रामिंग के लिए बहुत नया हूं, लेकिन MySQL डेटाबेस तक पहुंचने में सक्षम होना चाहता हूं (MS SQL के लिए पैसा नहीं है)

हालाँकि मेरा एक प्रश्न है; मुझे पता है कि आपको C # एप्लिकेशन को विकसित करने के लिए "MySQL कनेक्टर / NET" और "MySQL for Visual Studio" होना आवश्यक है, लेकिन क्या जो व्यक्ति एप्लिकेशन इंस्टॉल करता है, उन्हें भी उनकी आवश्यकता होती है? (क्या यह संभव है कि मैं प्रोग्राम के साथ कनेक्टर डीएलएल जारी कर सकता हूं?)

धन्यवाद

संपादित करें: क्या वे दोनों अंतिम-उपयोगकर्ता या केवल कनेक्टर के लिए आवश्यक हैं? वहाँ कुछ और है कि वे की आवश्यकता होगी?


3
हां, आपको केवल डीएलएल को आपके प्रोग्राम के साथ पैकेज करना होगा, यह आपके प्रोग्राम को चलाने पर पहले से ही आपके आउटपुट डीबग / रिलीज़ फ़ोल्डर में होना चाहिए।
ओमशुमा

नोट: विज़ुअल स्टूडियो के लिए MySQL VS2010E में काम नहीं करता है
एनरिक सैन

उपरोक्त नोट के लिए @ EnriqueSanMartín संस्करण 2.0 और संस्करण 1.2 के लिए Microsoft Visual Studio 2010 के समर्थन को हटा दिया गया था
उत्सुकता

जवाबों:


96

Oracle का MySql.DataNuGet पैकेज स्थापित करें ।

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

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

        private string databaseName = string.Empty;
        public string DatabaseName
        {
            get { return databaseName; }
            set { databaseName = value; }
        }

        public string Password { get; set; }
        private MySqlConnection connection = null;
        public MySqlConnection Connection
        {
            get { return connection; }
        }

        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=localhost; database={0}; UID=UserName; password=your password", databaseName);
                connection = new MySqlConnection(connstring);
                connection.Open();
            }

            return true;
        }

        public void Close()
        {
            connection.Close();
        }        
    }
}

उदाहरण:

var dbCon = DBConnection.Instance();
dbCon.DatabaseName = "YourDatabase";
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();
}

3
यदि आपको इंटरनेट कनेक्शन की समस्याओं का सामना करना पड़ सकता है और आप तब तक कोशिश करना चाहेंगे जब तक आप कनेक्ट नहीं करेंगे यह काम नहीं करेगा। if (_instance == null)लाइन हटाएं । यह भी सुनिश्चित bool result = falseडिफ़ॉल्ट रूप से, क्योंकि यह इंटरनेट कनेक्शन समस्याओं और कई अन्य वास्तव में, न केवल क्योंकि डेटाबेस का नाम सेट नहीं किया जाएगा के लिए कनेक्ट नहीं किया जा सकता है। उस स्थिति में if (String.IsNullOrEmpty(databaseName)) return false;क्योंकि यह सिर्फ एक अपवाद को फेंक देगा और सही भी हो सकता है जो सही नहीं होगा। हालांकि, साफ कोड के लिए upvoted, धन्यवाद।
ब्रैकेट्स

1
आपके पास निजी निर्माता के साथ "परिपत्र" संदर्भ क्यों है? ( new DBConnection();और private DBConnection())
सोलेल - मैथ्यू प्रेवोट

आपको बस इतना करना होगा connection = nullपर DBConnection.Close()बाद से यह सिंगलटन है और आप इसे फिर से उपयोग कर सकते हैं
रोमन

1
यह आरंभ करने के लिए बहुत अच्छा है! मैंने पहले ही थोड़ा विस्तार कर लिया है public bool IsConnect()ifकथन के बाद, कनेक्शन का पुन: उपयोग करने के लिए: else if (connection.State == System.Data.ConnectionState.Closed) { connection.Open(); }आपके आवेदन में आप dbCon.IsConnect()पिछली क्वेरी के बाद इसे बंद करने के बाद फिर से कर सकते हैं । ऐसा नहीं करते connection = null;में DBConnection.Close()के रूप में रोमन सुझाव दिया है, अन्यथा नहीं होगा काम पुन: उपयोग।
लारोफाइड

शानदार जवाब, लेकिन मैं एक निश्चित पोर्ट से कैसे जुड़ सकता हूं। मेरा नेटवर्क यह है कि देव, परीक्षण और लाइव डेटा दोनों एक ही सर्वर पर हैं, लेकिन विभिन्न बंदरगाहों पर। मैं सिर्फ 1 पोर्ट से कैसे जुड़ सकता हूं।
Linux4Life531

54

आप पैकेज प्रबंधक को पैकेज के रूप में जोड़ने के लिए उपयोग कर सकते हैं और यह सबसे आसान तरीका है। आपको mysql डेटाबेस के साथ काम करने के लिए किसी और चीज की आवश्यकता नहीं है।

या आप पैकेज मैनेजर कंसोल में कमांड के नीचे चला सकते हैं

PM> Install-Package MySql.Data

NUGET मैसूरल.डाटा


यदि आप इसे "प्रबंधित NuGet Package" विंडो के माध्यम से खोजते हैं, तो ध्यान रखें कि पैकेज का नाम संवेदनशील है । हो सकता है कि लोअरकेस नामों वाले पैकेज मैनेजरों से आने वाले लोगों के लिए ऐसी कोई स्पष्ट बात न हो।
दिमित्री के

13

आपको यहाँ से MySQLConnection NET डाउनलोड करना होगा ।

फिर आपको MySql.Data.DLLइस तरह MSVisualStudio में जोड़ने की आवश्यकता है :

  1. ओपन मेन्यू प्रोजेक्ट
  2. जोड़ना
  3. संदर्भ
  4. के लिए ब्राउज़ करें C:\Program Files (x86)\MySQL\MySQL Connector Net 8.0.12\Assemblies\v4.5.2
  5. MySql.Data.dll जोड़ें

यदि आप अधिक यात्रा जानना चाहते हैं: यहां लिंक विवरण दर्ज करें

कोड का उपयोग करने के लिए आपको पुस्तकालय आयात करना होगा:

using MySql.Data.MySqlClient;

क्लिक घटना के माध्यम से माईसैकल डेटाबेस (NO SSL MODE) से कनेक्टियो के साथ एक उदाहरण :

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());(यह डी गायब है)



-4
 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);
    }

15
आपने इसे codeproject.com/Articles/43438/Connect-C-to-MySQL से कॉपी किया है। यह पहले से ही "बाउट
हैमड शेम्स

मैं सहमत हूं, @Elmue -
मोमोरो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.