Is there an easier way to use the name and phone variables inside the below insert SQL Command?
String Interpolation is a way but I don't know how to implement this.
String name = textBox1.Text;
String phone = textBox2.Text;
var query = "insert into Customer_info(Customer_Name,Customer_Phone) " +
"values('" + name + "','" + phone + "');";
SqlCommand com = new SqlCommand(query,con);
try {
con.Open();
com.ExecuteNonQuery();
con.Close();
}
catch (Exception Ex) {
con.Close();
}
What you really should do is use a parameterised query, so your query would look like this:
var query = "insert into Customer_info(Customer_Name,Customer_Phone)" +
"values(@name, @phone);";
You'd then use a SQLCommand object to pass the parameters to the query:
using (var command = new SqlCommand(query, connection))
{
command.Parameters.AddWithValue("@name", name);
command.Parameters.AddWithValue("@phone", phone);
command.ExecuteNonQuery();
}
The reason for this is that it avoids the risk of SQL Injection (which is one of the OWASP Top 10). Consider for a moment your current query if the name passed in contained some SQL, for example if it contained:
'; DROP TABLE [Customer_info]; --
This would mean that your constructed SQL (if phone was blank) would look like this:
insert into Customer_info(Customer_Name,Customer_Phone) values ('';
DROP TABLE [Customer_Info];
-- ','');
This may well result in your Customer_Info table being dropped if the user that the code is connecting to SQL as has sufficient rights to do so.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With