जब एक 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();
}
}
कृपया उन टेक्स्टबॉक्स को उचित नाम दें। जो बेचारा इस कोड को बनाए रखेगा वह निराशा की चीखें निकाल सकता है।