it-swarm.com.de

Eine Ausnahme des Typs 'System.Data.SqlClient.SqlException' ist in System.Data.dll aufgetreten

Ich bin ein Anfänger mit c #, wenn ich den Code ausführt, tritt diese Fehlermeldung auf >>

Msgstr "Eine Ausnahme des Typs 'System.Data.SqlClient.SqlException' trat in System.Data.dll auf, wurde jedoch nicht im Benutzercode behandelt

Zusätzliche Informationen: Falsche Syntax in der Nähe von '='. "

Und das ist der Code !!

string position;

SqlConnection con = new SqlConnection("server=free-pc\\FATMAH; 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
F 505

Es gibt einige Probleme mit Ihrem Code. Zuerst empfehle ich die Verwendung parametrisierter Abfragen, um SQL-Injection-Angriffe zu vermeiden und auch Parametertypen werden vom Framework erkannt:

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

Zweitens, da Sie nur an einem von der Abfrage zurückgegebenen Wert interessiert sind, ist es besser, ExecuteScalarMSDN zu verwenden:

var name = cmd.ExecuteScalar();

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

Das letzte ist, SqlConnection und SqlCommand in using zu packen, so dass alle Ressourcen, die von diesen genutzt werden, zur Verfügung stehen würden:

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

Ich denke, Ihre EmpID-Spalte ist string und Sie vergessen, ' ' in Ihrem Wert zu verwenden.

Wenn Sie EmpID=" + id.Text schreiben, sieht Ihr Befehl wie EmpID = 12345 anstelle von EmpID = '12345' aus. 

Ändern Sie Ihre SqlCommand in

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

Oder als bessere Möglichkeit können Sie (/ sollten) immer parameterized queries verwenden. Diese Art von String-Verkettungen ist für Angriffe mit SQL Injection offen.

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

Ich denke, Ihre EmpID-Spalte behält Ihre Mitarbeiter-IDs bei, daher sollte der Typ einen numerischen Typ anstelle des Charakters haben.

6
Soner Gönül

Versuche dies

SqlCommand cmd = new SqlCommand("SELECT EmpName FROM Employee WHERE [email protected]", con);
cmd.Parameters.AddWithValue("id", id.Text);
3
Dmytro Rudenko

verwenden Sie try-catch, um einen echten Fehler zu sehen

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

Eine nicht behandelte Ausnahme des Typs 'System.Data.SqlClient.SqlException' ist in System.Data.dll aufgetreten

    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();
    }
0
saba