Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL कनेक्शन त्रुटि जो मैंने कभी नहीं देखी

जब एक ADO.NET कनेक्टर ? आपकी क्वेरी बनाते समय यह भयानक स्ट्रिंग संयोजन क्या है?:

OdbcCommand cmd = new OdbcCommand("INSERT INTO User (Email, FirstName, SecondName, DOB, Location, Aboutme, username, password) VALUES ('" + TextBox1.Text + "', '" + TextBox2.Text + "', '" + TextBox3.Text + "', '" + TextBox4.Text + "', '" + TextBox5.Text + "', '" + TextBox6.Text + "', '" + TextBox7.Text + "', '" + TextBox8.Text + "')", connection);

क्या आपने SQL इंजेक्शन के बारे में नहीं सुना है और पैरामीट्रिज्ड क्वेरी जो इससे बचने की अनुमति देते हैं?

मैं केवल इतना कह सकता हूं कि यदि आप + . का उपयोग करते हैं SQL क्वेरी लिखते समय साइन इन करें यह एक बंदूक लेने और सीधे आपके पैर पर गोली मारने जैसा है (या परिदृश्य के आधार पर सिर, लेकिन सभी मामलों में आप खुद पर शूटिंग कर रहे हैं, मूल रूप से एक आत्मघाती व्यवहार)।

तो, ये है काम करने का सही तरीका:

using (var conn = new MySqlConnection("Server=localhost; Database=gymwebsite2; User=root; Password=commando;"))
{
    conn.Open();
    using (var tx = conn.BeginTransaction())
    {
        using (var cmd = conn.CreateCommand())
        {
            cmd.CommandText = "INSERT INTO User (Email, FirstName, SecondName, DOB, Location, Aboutme, username, password) VALUES (@Email, @FirstName, @SecondName, @DOB, @Location, @Aboutme, @username, @password)";
            cmd.Parameters.AddWithValue("@Email", TextBox1.Text);
            cmd.Parameters.AddWithValue("@FirstName", TextBox2.Text);
            cmd.Parameters.AddWithValue("@SecondName", TextBox3.Text);

            // TODO: might require a parsing if the column is of type date in SQL
            cmd.Parameters.AddWithValue("@DOB", TextBox4.Text);

            cmd.Parameters.AddWithValue("@Location", TextBox5.Text);
            cmd.Parameters.AddWithValue("@Aboutme", TextBox6.Text);
            cmd.Parameters.AddWithValue("@username", TextBox7.Text);
            cmd.Parameters.AddWithValue("@password", TextBox8.Text);
            cmd.ExecuteNonQuery();
        }

        using (var cmd = conn.CreateCommand())
        {
            cmd.CommandText = "select last_insert_id();";
            int id = Convert.ToInt32(cmd.ExecuteScalar());
            Label10.Text = Convert.ToString(id);
        }

        tx.Commit();
    }
}

कृपया उन टेक्स्टबॉक्स को उचित नाम दें। जो बेचारा इस कोड को बनाए रखेगा वह निराशा की चीखें निकाल सकता है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySql.Data.MySqlClient का उपयोग करना; काम नहीं कर रहा

  2. mysql अब उसी के साथ कई कॉलम अपडेट करें ()

  3. MySQL सीखें - नई प्रौद्योगिकी सप्ताह

  4. एक पंक्ति के भीतर मानक विचलन का चयन कैसे करें? (एसक्यूएल में - या आर :)

  5. PHP - मेरी क्वेरी की सरणी की कुंजी आईडी बनाएं