c# - 'Full_Name' 附近的语法不正确

标签 c# sql sql-server sqlexception

我希望你能帮忙,我正在尝试更新我的数据库文件,但我一直收到错误,我不确定为什么,我在添加数据或显示数据时没有任何问题它只是更新数据我遇到了问题,可能是什么问题?

错误是:

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
        }
    }
}

最佳答案

您在 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

关于c# - 'Full_Name' 附近的语法不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44229827/

相关文章:

c# - 尝试访问 USB 设备时的 RPC_E_CANTCALLOUT_ININPUTSYNCCALL

c# - 非静态方法需要 objective-c #

php - mysql 基于时间戳计数?

sql - Oracle中过滤重复列

sql - 永远循环的 T-SQL 中的 While 子句

c# - 如何错误处理C#中的过点击

c# - 如何以线程安全的方式调用 .NET ConcurrentDictionary 上的 GetOrAdd 方法?

sql - 创建非唯一索引时出现唯一索引错误 - SQL Server

sql - Oracle:在包含分区 LOB 列的表上创建索引

SQL Server FOR XML Path 使重复节点