2017-05-28 28 views
1

データベースファイルを更新しようとしていますが、エラーが発生し続けている理由がわかりません。データを追加したり表示したりするのに問題はありませんデータを更新しているだけで問題が発生している可能性があります。'Full_Name'付近の構文が正しくありません

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

そして、これが私のソースコードです:

誤りがある

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

SQLを印刷した場合、問題は明らかです。 SQL文が必要な場所にスペースがありません。 –

答えて

6

あなたはsetwhere句の前に空白が欠落しています

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

あなたは」 @Full_Nameを単一引用符で囲む必要があります:

'@フルネーム'

関連する問題