I am trying to query SQL Server database from C#
I have class
Class_A { public fetch((string name, string last_name)) { SqlConnection conn = null; double val = 0; string server = "123.444.22.sss"; string dbase = "xyz"; string userid = "cnsk"; string password = "xxxxxx"; string connection = "Data Source=" + server + ";Initial Catalog=" + dbase + ";User ID=" + userid + ";Password=" + password; conn = new SqlConnection(connection); try { conn.Open(); } catch(Exception) { string e = "Database error contact administrator"; MessageBox.Show(e, "Error!"); } try { SqlDataReader myReader = null; SqlCommand myCommand = new SqlCommand("select * from table where NAME" + " = name and LAST_NAME = last_name", conn); myReader = myCommand.ExecuteReader(); while (myReader.Read()) { //do something } } catch (Exception e) { Console.WriteLine(e.ToString()); } return (0); } }
There is a problem in my query.
When I give normal query “select * from table” — this gives me perfect results.
But when I try to give where condition it gives me error. Any suggestions, to fix this? Thanks.
Advertisement
Answer
⚠️ WARNING This answer contains a SQL injection security vulnerability. Do not use it. Consider using a parameterized query instead, as described in some of the other answers to this question (e.g. Tony Hopkinson’s answer).
Try adding quotes around the values in the where clause like this:
select * from table where NAME = 'name' and LAST_NAME = 'last_name'
In your case where you are using variables you need to add the quotes and then concatenate the values of the variables into the string. Or you could use String.Format
like this:
var sql = String.Format("select * from table where [NAME] = '{0}' and LAST_NAME = '{1}'", name, last_name); SqlCommand myCommand = new SqlCommand(sql);