使用Npgsql postgres和C#更新命令 [英] Update command using Npgsql postgres and C#

查看:346
本文介绍了使用Npgsql postgres和C#更新命令的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have created a search form to locate a record based on a search value called license ID. I am able to pull the all the fields for that value. My question is I am trying to update any field for that record, example if I want to update the address field or the zip code field which all these field values are in text boxes. I get an syntax error at or near ""Lname"". Lname is the database field name for last name. This project is just a test project to get familiar with Postgres. Here is my source code. I am not sure what the problems is, the field name is correctly specified.

 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());
        }


推荐答案

您只需要设置每个命令一次。

You only need "set" once per command.

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);

这篇关于使用Npgsql postgres和C#更新命令的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆