更新命令使用Npgsql postgres和c#

本文关键字:postgres Npgsql 命令 更新 | 更新日期: 2023-09-27 18:09:05

我创建了一个搜索表单,用于根据称为许可证ID的搜索值定位记录。我能够拉出该值的所有字段。我的问题是,我正在尝试更新该记录的任何字段,例如,如果我想更新地址字段或邮政编码字段所有这些字段值都在文本框中。我得到一个语法错误或附近的"Lname"。Lname是姓氏的数据库字段名。这个项目只是一个熟悉Postgres的测试项目。这是我的源代码。我不确定问题是什么,字段名称是正确指定的。

 private void UpdateRecord()
    {
        try
        {
            NpgsqlConnection conn = Connection.getConnection();
            conn.Open();
            NpgsqlCommand cmd = new NpgsqlCommand("update info set '"Fname'" = :FirstName, set '"Lname'" = :LastName, set '"Address'" = :Address," +
                "set '"City'" = :City, set '"State'" = State, set '"Zip'" = :Zip," + 
                "set '"PhoneNumber'" = :PhoneNumber where '"LicenceNumber'" = '" + LicenseID + "' ;", conn);
            cmd.Parameters.Add(new NpgsqlParameter("FirstName", NpgsqlTypes.NpgsqlDbType.Text));
            cmd.Parameters.Add(new NpgsqlParameter("LastName", NpgsqlTypes.NpgsqlDbType.Text));
            cmd.Parameters.Add(new NpgsqlParameter("Address", NpgsqlTypes.NpgsqlDbType.Text));
            cmd.Parameters.Add(new NpgsqlParameter("City", NpgsqlTypes.NpgsqlDbType.Text));
            cmd.Parameters.Add(new NpgsqlParameter("State", NpgsqlTypes.NpgsqlDbType.Text));
            cmd.Parameters.Add(new NpgsqlParameter("Zip", NpgsqlTypes.NpgsqlDbType.Text));
            cmd.Parameters.Add(new NpgsqlParameter("PhoneNumber", NpgsqlTypes.NpgsqlDbType.Text));
            cmd.Parameters[0].Value = txtFirstName.Text;
            cmd.Parameters[1].Value = txtLastName.Text;
            cmd.Parameters[2].Value = txtAddress.Text;
            cmd.Parameters[3].Value = txtCity.Text;
            cmd.Parameters[4].Value = cboState.Text;
            cmd.Parameters[5].Value = txtZip.Text;
            cmd.Parameters[6].Value = mtxtPhoneNumber.Text;
            cmd.ExecuteNonQuery();
            conn.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }

更新命令使用Npgsql postgres和c#

每条命令只需要"set"一次。

NpgsqlCommand cmd = new NpgsqlCommand("update info set '"Fname'" = :FirstName, '"Lname'" = :LastName, '"Address'" = :Address," +
                "'"City'" = :City, '"State'" = State, '"Zip'" = :Zip," + 
                "'"PhoneNumber'" = :PhoneNumber where '"LicenceNumber'" = '" + LicenseID + "' ;", conn);