public void buttonclick(object sender,eventArgs e)
{
SqlConnection con0 = new SqlConnection(ConfigurationManager.ConnectionStrings["BUM"].ConnectionString);
con0.Open();
SqlCommand cmd0 = new SqlCommand("", con0);
con0.Close();
SqlConnection con1 = new SqlConnection(ConfigurationManager.ConnectionStrings["BUM"].ConnectionString);
con1.Open();
SqlCommand cmd3 = new SqlCommand("book_master_insert", con1);
cmd3.CommandType = CommandType.StoredProcedure;
SqlParameter customer_id = new SqlParameter("@customer_id", cust_id);
SqlParameter booking_from = new SqlParameter("@booking_from", ddlfrom.SelectedItem.Text);
SqlParameter booking_destination = new SqlParameter("@booking_destination", ddlto.SelectedItem.Text);
SqlParameter load_type = new SqlParameter("@load_type", ddlLoadtype.SelectedItem.Text);
SqlParameter no_of_containers = new SqlParameter("@no_of_containers", txt_no_of_container.Text);
SqlParameter booking_pickupdate = new SqlParameter("@booking_pickupdate", txt_date.Text);
SqlParameter booking_pickuptime = new SqlParameter("@booking_pickuptime", txt_time.Text);
SqlParameter booking_createdate = new SqlParameter("@booking_createdate", localDate);
cmd3.Parameters.Add(customer_id);
cmd3.Parameters.Add(booking_createdate);
cmd3.Parameters.Add(booking_from);
cmd3.Parameters.Add(booking_destination);
cmd3.Parameters.Add(load_type);
cmd3.Parameters.Add(no_of_containers);
cmd3.Parameters.Add(booking_pickupdate);
cmd3.Parameters.Add(booking_pickuptime);
cmd3.ExecuteNonQuery();
con1.Close();
SqlConnection con2 = new SqlConnection(ConfigurationManager.ConnectionStrings["BUM"].ConnectionString);
con2.Open();
SqlCommand cmd2 = new SqlCommand("select booking_ID from booking_master where customer_id='"+cust_id+"' and booking_from='" + ddlfrom.SelectedItem.Text + "'and booking_destination='" + ddlto.SelectedItem.Text + "' and load_type='" + ddlLoadtype.SelectedValue + "' and no_of_containers='" + txt_no_of_container.Text + "' and CAST (booking_pickupdate as date) ='" + txt_date.Text + "' and booking_pickuptime='" + txt_time.Text + "';", con2);
SqlDataReader rdr = cmd2.ExecuteReader();
while (rdr.Read())
{
booking_ID = rdr["booking_ID"].ToString();
}
con2.Close();
}
Antwort
Da CON0, CON1 und CON2 gleich sind, können Sie es so schreiben, und bitte cmd2 wie cmd3 machen, parametrisierte Abfrage verwenden:
using (var conn = new SqlConnection("...Connection String..."))
{
conn.Open();
using (var cmd = new SqlCommand())
{
cmd.Connection = conn;
// Query1
cmd.CommandText = "...Query1...";
cmd.ExecuteNonQuery();
// Query2
cmd.CommandText = "...Query2...";
cmd.ExecuteReader();
}
}
über Effizienz reden erste, was Sie versuchen zu machen?
System.Data.SqlClient (ADO.Net) re-use connection pooling wenn es neue Verbindung detektiert, ist auch mit der ersten Verbindung hergestellt Basis auf sie Connection.
Der Aufruf mehrerer SqlConnection ist nicht von Bedeutung, solange Sie sie schließen und nach der Verwendung entsorgen. Viel besser, wenn Sie es mit Anweisung umschließen, aber denken Sie daran, dass es davon abhängt, was Sie versuchen zu tun oder was Sie benötigen. Das Öffnen/Schließen der Verbindung ist viel billiger als die offene Verbindung für lange Zeit. Wenn du die Verbindung wiederverwenden kannst, mag es was @x ... beantwortet.
Es hat nichts mit Effizienz zu tun, aber Sie sollten AVOID anhängen Benutzereingabewert in Ihrer SQL-Abfrage. Dies führte zu SQL-Injektion und -Exploration, wie es @mar_s sagte. Alternativ können Sie
cmd.Parameters.AddWithValue("@Name", "Bob");
für Ihre Sicherheit verwenden.
Hinweis: Ich habe den Code nicht getestet:
public void buttonclick(object sender,eventArgs e)
{
var connectionString = ConfigurationManager.ConnectionStrings["BUM"].ConnectionString;
using(SqlConnection con0 = new SqlConnection(connectionString))
{
con0.Open();
using(SqlCommand cmd = new SqlCommand("book_master_insert", con0))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@customer_id", cust_id);
cmd.Parameters.AddWithValue("@booking_from", ddlfrom.SelectedItem.Text);
cmd.Parameters.AddWithValue("@booking_destination", ddlto.SelectedItem.Text);
cmd.Parameters.AddWithValue("@load_type", ddlLoadtype.SelectedItem.Text);
cmd.Parameters.AddWithValue("@no_of_containers", txt_no_of_container.Text);
cmd.Parameters.AddWithValue("@booking_pickupdate", txt_date.Text);
cmd.Parameters.AddWithValue("@booking_pickuptime", txt_time.Text);
cmd.Parameters.AddWithValue("@booking_createdate", localDate);
cmd.ExecuteNonQuery();
// This is a BAD idea and you should replace this using parametrized queries
using(SqlCommand cmd2 = new SqlCommand("select booking_ID from booking_master where customer_id='"+cust_id+"' and booking_from='" + ddlfrom.SelectedItem.Text + "'and booking_destination='" + ddlto.SelectedItem.Text + "' and load_type='" + ddlLoadtype.SelectedValue + "' and no_of_containers='" + txt_no_of_container.Text + "' and CAST (booking_pickupdate as date) ='" + txt_date.Text + "' and booking_pickuptime='" + txt_time.Text + "';", con2))
{
using(SqlDataReader rdr = cmd2.ExecuteReader())
{
while (rdr.Read())
{
booking_ID = rdr["booking_ID"].ToString();
}
}
}
}
}
}
- 1. ASP.NET Fehler auf die Schaltfläche klicken
- 2. C#, Zeilenanzahl in Datagridview auf Schaltfläche klicken
- 3. Ist es möglich, die Verwendung einer using-Anweisung in C#
- 4. Unterstützung mehrerer Assemblys in ASP.NET \ C# -Projekten
- 5. Ein Klicken Wenn die Schaltfläche deaktiviert ist Klicken Sie auf Schaltfläche wird nicht ausgelöst
- 6. Benutzersteuerungsknopf klicken in asp.net
- 7. Wie effizient ist in PHP definiert?
- 8. Was ist generische Handler in asp.net und es ist Verwendung?
- 9. Was ist die Verwendung von Enums in C und C++
- 10. Ist die Verwendung von Attributen in .NET (C#) teuer?
- 11. Ist die Verwendung von async/await in ASP.NET-Ereignishandlern sicher?
- 12. Was ist die Verwendung von Eval() in asp.net
- 13. Was ist die URL in Asp.net Munging?
- 14. Get Objekt von ListView beim Klicken auf die Schaltfläche in der Zeile - ASP.NET C#
- 15. 2 Aufgaben auf einzelne Schaltfläche klicken in ASP.net
- 16. Mein Gridview in asp.net C# -Zeilenbefehl wird nicht nach Update-Schaltfläche klicken klicken
- 17. Was ist die Verwendung von Const Überladung in C++?
- 18. MPAndroidChart - Schaltfläche in MarkerView klicken
- 19. ASP.NET JavaScript Rückkehr nach Schaltfläche klicken
- 20. Python - Listenverständnis in diesem Fall ist effizient?
- 21. URL-Rewriting-Probleme auf Schaltfläche klicken in asp.net
- 22. was ist die Verwendung von fflush (stdin) in C-Programmierung
- 23. Was ist die Verwendung von _start() in C?
- 24. Wie ist die korrekte Verwendung von Bitfeldern in C?
- 25. Was ist die Verwendung von #if in C#?
- 26. Was ist die Verwendung von #pragma Warnung in C#?
- 27. ASP.NET Schaltfläche klicken Ereignis funktioniert nicht in IE
- 28. Schaltfläche klicken Aktion in Android?
- 29. schreiben Sie Code für die automatisch generierte Schaltfläche in Datagridview in C#, asp.net
- 30. Wie effizient ist die Suche in der SQL-Datenbank?
Wenn Sie auf demselben Server und derselben Datenbank verbinden, müssen Sie nicht die Verbindung nach der ersten Abfrage schließen müssen . Lass es offen. Ändern Sie den SqlCommand und senden Sie die Abfrage erneut. Wenn alle Abfragen abgeschlossen sind, können Sie die Verbindung schließen. –
Sie tun nicht den 'SqlCommand cmd2 = neuen SqlCommand (" select booking_ID .... 'in der Produktion? Https://www.owasp.org/index.php/SQL_Injection SqlInjection ist sehr gefährlich – Michel