An exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll An exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll sql sql

An exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll


There are some problems with your code. First I advise to use parametrized queries so you avoid SQL Injection attacks and also parameter types are discovered by framework:

var cmd = new SqlCommand("SELECT EmpName FROM Employee WHERE EmpID = @id", con);cmd.Parameters.AddWithValue("@id", id.Text);

Second, as you are interested only in one value getting returned from the query, it is better to use ExecuteScalar:

var name = cmd.ExecuteScalar();if (name != null){   position = name.ToString();   Response.Write("User Registration successful");}else{    Console.WriteLine("No Employee found.");}

The last thing is to wrap SqlConnection and SqlCommand into using so any resources used by those will be disposed of:

string position;using (SqlConnection con = new SqlConnection("server=free-pc\\FATMAH; Integrated Security=True; database=Workflow; ")){  con.Open();  using (var cmd = new SqlCommand("SELECT EmpName FROM Employee WHERE EmpID = @id", con))  {    cmd.Parameters.AddWithValue("@id", id.Text);      var name = cmd.ExecuteScalar();      if (name != null)    {       position = name.ToString();       Response.Write("User Registration successful");    }    else    {        Console.WriteLine("No Employee found.");    }  }}


I think your EmpID column is string and you forget to use ' ' in your value.

Because when you write EmpID=" + id.Text, your command looks like EmpID = 12345 instead of EmpID = '12345'

Change your SqlCommand to

SqlCommand cmd = new SqlCommand("SELECT EmpName FROM Employee WHERE EmpID='" + id.Text +"'", con);

Or as a better way you can (and should) always use parameterized queries. This kind of string concatenations are open for SQL Injection attacks.

SqlCommand cmd = new SqlCommand("SELECT EmpName FROM Employee WHERE EmpID = @id", con);cmd.Parameters.AddWithValue("@id", id.Text);

I think your EmpID column keeps your employee id's, so it's type should some numerical type instead of character.


Try this

SqlCommand cmd = new SqlCommand("SELECT EmpName FROM Employee WHERE EmpID=@id", con);cmd.Parameters.AddWithValue("id", id.Text);