Исключение типа 'System.Данные.В sqlclient.SqlException ' произошло в системе.Данные.файл DLL

Я новичок с C#, когда я выполнить код, это сообщение об ошибке возникает>>

"исключение типа 'System.Данные.В sqlclient.SqlException ' произошло в Система.Данные.DLL но не был обработан в пользовательском коде

дополнительная информация: неверный синтаксис рядом с'='. "

и это код!!

string position;

SqlConnection con = new SqlConnection("server=free-pcFATMAH; Integrated Security=True; database=Workflow; ");
con.Open();
SqlCommand cmd = new SqlCommand("SELECT EmpName FROM Employee WHERE EmpID=" + id.Text, con);

SqlDataReader Read = cmd.ExecuteReader();

if (Read.Read()==true)
{
    position = Read[0].ToString();
    Response.Write("User Registration successful");
}
else
{
    Console.WriteLine("No Employee found.");
}

Read.Close(); 

6 ответов


есть некоторые проблемы с вашим кодом. Сначала я советую использовать параметризованные запросы, чтобы избежать атак SQL-инъекций, а также типы параметров обнаруживаются framework:

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

во-вторых, поскольку вас интересует только одно значение, возвращаемое из запроса, лучше использовать ExecuteScalar MSDN:

var name = cmd.ExecuteScalar();

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

последняя вещь обернуть SqlConnection и SqlCommand на using поэтому любые ресурсы, используемые теми, будут утилизированы:

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.");
    }
  }
}

Я думаю, что ваш


попробуй такое

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

необработанное исключение типа System.Данные.В sqlclient.SqlException ' произошло в системе.Данные.dll файлы

    private const string strconneciton = "Data Source=.;Initial Catalog=Employees;Integrated Security=True";
    SqlConnection con = new SqlConnection(strconneciton);

    private void button1_Click(object sender, EventArgs e)
    {

        con.Open();
        SqlCommand cmd = new SqlCommand("insert into EmployeeData (Name,S/O,Address,Phone,CellNo,CNICNO,LicenseNo,LicenseDistrict,LicenseValidPhoto,ReferenceName,ReferenceContactNo) values ( '" + textName.Text + "','" + textSO.Text + "','" + textAddress.Text + "','" + textPhone.Text + "','" + textCell.Text + "','" + textCNIC.Text + "','" + textLicenseNo.Text + "','" + textLicenseDistrict.Text + "','" + textLicensePhoto.Text + "','" + textReferenceName.Text + "','" + textContact.Text + "' )", con);
        cmd.ExecuteNonQuery();
        con.Close();
    }

используйте try-catch, чтобы увидеть реальную ошибку, возникшую на вас

 try
{
  //Your insert code here
}
catch (System.Data.SqlClient.SqlException sqlException)
{
  System.Windows.Forms.MessageBox.Show(sqlException.Message);
}

using (var cmd = new SqlCommand("SELECT EmpName FROM [Employee] WHERE EmpID = @id", con))

поставить [] вокруг имени таблицы ;)