错误的获取函数数据插入从postgree到c#的数据。

问题描述 投票:0回答:1

我的C#代码(Visual Studio

private void button_insert_Click(object sender, EventArgs e)
    {
        try
        {
            conn.Open();
            sql = @"select * from st_insert(:_name,:_phone_number,:_address,:_height,:_weight,:_age)";
            cmd = new NpgsqlCommand(sql, conn);
            cmd.Parameters.AddWithValue("_name", textBox_name.Text);
            cmd.Parameters.AddWithValue("_phone_number", textBox_phone_number.Text);
            cmd.Parameters.AddWithValue("_address", textBox_address.Text);
            cmd.Parameters.AddWithValue("_height", textBox_height.Text);
            cmd.Parameters.AddWithValue("_weight", textBox_weight.Text);
            cmd.Parameters.AddWithValue("_age", textBox_age.Text);
            if ((int)cmd.ExecuteScalar() == 1)
            {
                conn.Close();
                MessageBox.Show("Success insert a new Customers", "Saved", MessageBoxButtons.OK, MessageBoxIcon.Information);
                button_load.PerformClick();
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error: " + ex.Message, "Insert Fail", MessageBoxButtons.OK, MessageBoxIcon.Error);
            conn.Close();
        }
    }

在pgadmin上插入功能

create function st_insert ( _name character, _phone_number character,   
                           _address character, _height character,   
                           _weight character, _age integer )
returns int 
as $$ 
    begin 
        insert into customers ( name, phone_number, address, height, weight, age )
        values ( _name, _phone_number, _address, _height, _weight, _age );

        if found 
            then return 1; 
        else 
            return 0; 
        end if; 
    end $$ language plpgsql

当我点击button_insert时显示错误。

错误 42883 函数 st_insert(text,text,text,text,text,text) 不存在。

c# postgresql npgsql pgadmin
1个回答
0
投票

该函数的最后一个参数是 "select * from st_insert(:_name,:...)"。_age integer 但您将参数添加为 text. 错误信息证实了这一点,说它没有找到最后一个参数是文本的函数。

--> 将参数类型改为整数。

© www.soinside.com 2019 - 2024. All rights reserved.