使用Npgsql postgres和C#更新命令

6
我创建了一个搜索表单,根据许可证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());
        }

在你的架构中,“lanme”是小写、大写还是混合大小写?这在PostgreSQL中很重要。 - iamkrillin
模式中的字段为Lname。大小写混合。 - Evanark
1个回答

8
您只需要在每个命令中使用一次“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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接