2017-05-28 10 views
1

Ich hoffe, Sie können helfen, ich versuche, meine Datenbankdatei zu aktualisieren, aber ich bekomme weiterhin einen Fehler, und ich bin mir nicht sicher warum, ich habe kein Problem beim Hinzufügen von Daten oder Anzeigen Daten, es aktualisiert nur die Daten, die ich habe Probleme mit was könnte das Problem sein?Falsche Syntax in der Nähe von "Full_Name"

der Fehler ist:

System.Data.SqlClient.SqlException (0x80131904): Incorrect syntax near 'Full_Name'. 

Und das ist mein Quellcode:

public void UpdateTable() 
{ 
    try 
    { 
     string ID = Txt_IdNumber.Text;//ID Input 
     string setYearFormat = Tdp_DateOfBirth.Value.ToString("yyyy");//Get only the year to calculate age 
     string CurrentYear = DateTime.Now.Year.ToString();//Get current year from system settings 
     int getAge = Convert.ToInt32(CurrentYear) - Convert.ToInt32(setYearFormat);//Calculate Age 
     string setDOB = Tdp_DateOfBirth.Value.ToString("dd/MM/yyyy");//Set TimeDatePicker to spesific Long date 
     string Query = "UPDATE UserData" + 
         "SET Full_Name = @Fullname, Date_Of_Birth = @DateOfBirth, ID_Number = @IdNumber, Age = @Age" + 
         "WHERE Id = @Id";//Update query 
     using (SqlConnection Connection = new SqlConnection(ConnectionString))//Connection to ConnectionString 
     using (SqlCommand Command = new SqlCommand(Query, Connection))//Sql Command to add/Update 
     { 
      Connection.Open();//Open Connection 
      Command.Parameters.AddWithValue("@Id", Dgv_Output.SelectedRows);//Add Values 
      Command.Parameters.AddWithValue("@Fullname", Txt_Fullname.Text);//Add Values 
      Command.Parameters.AddWithValue("@DateOfBirth", Convert.ToDateTime(setDOB));//Add Values 
      Command.Parameters.AddWithValue("@IdNumber", ID);//Add Values 
      Command.Parameters.AddWithValue("@Age", getAge);//Add Values 
      Command.ExecuteNonQuery();//Execute Non Query 
     } 

     Txt_Fullname.Clear();//Clear Textbox 
     Txt_IdNumber.Clear();//Clear Textbox 
     Tdp_DateOfBirth.Value = DateTime.Now;//Set TimeDatePicker to system date 
     Txt_Fullname.Focus();//Focus on Full Name textbox 
    } 
    catch (Exception Err) 
    { 
     MessageBox.Show(Err.ToString(), "ERROR"); 
     using (StreamWriter sr = new StreamWriter("UpdateError.txt"))//Write error to file 
     { 
      sr.Flush();//Flush existing data 
      sr.WriteLine(Err);//Write new data 
     } 
    } 
} 
+3

Wenn Sie die SQL ausgedruckt haben, wäre das Problem offensichtlich. In der SQL-Anweisung fehlen Leerzeichen. –

Antwort

6

Sie sind ein Leerzeichen vor den set und where Klauseln fehlen:

string Query = "UPDATE UserData " + 
       // Was missing--^ 
       "SET Full_Name = @Fullname, Date_Of_Birth = @DateOfBirth, ID_Number = @IdNumber, Age = @Age " + 
       // Here Too--------------------------------------------------------------------------------^ 
       "WHERE Id = @Id";//Update query 
0

Sie‘ Ich muss @Full_Name mit einfachen Anführungszeichen umgeben:

'@Full_Name'

Verwandte Themen