C# ) { MessageBox.Show(“已成功更新”); 选择(); } 其他的 { Show(“更新失败,请重试”); } } 捕获(例外情况除外) { 康涅狄格州关闭(); MessageBox.Show(“更新失败,请重试。错误:+ex.Message”); } } 结果=0; txtName.Text=txtdegate.Text=txtdevice.Text=txtID.Text=txtVAT.Text=null; txtName.Enabled=txtdegate.Enabled=txtdevice.Enabled=txtID.Enabled=txtVAT.Enabled=false; } } }

C# ) { MessageBox.Show(“已成功更新”); 选择(); } 其他的 { Show(“更新失败,请重试”); } } 捕获(例外情况除外) { 康涅狄格州关闭(); MessageBox.Show(“更新失败,请重试。错误:+ex.Message”); } } 结果=0; txtName.Text=txtdegate.Text=txtdevice.Text=txtID.Text=txtVAT.Text=null; txtName.Enabled=txtdegate.Enabled=txtdevice.Enabled=txtID.Enabled=txtVAT.Enabled=false; } } },c#,postgresql,winforms,C#,Postgresql,Winforms,我正在尝试创建4个按钮:插入、更新、删除和保存,当我单击“保存”时,会出现以下错误: 错误:42601语法错误位于或接近: 我真的不知道是什么 有人能帮我吗?可能是sql语句中的拼写错误“:\u departmento”和添加WithValue时的拼写错误“\u departmento”。未替换参数。不应使用AddWithValue。请参阅:@BjarniRagnarsson我发现了拼写错误,但现在我有了另一个错误:42883,函数docen_registar(text,text,text,te

我正在尝试创建4个按钮:插入、更新、删除和保存,当我单击“保存”时,会出现以下错误: 错误:42601语法错误位于或接近:

我真的不知道是什么


有人能帮我吗?

可能是sql语句中的拼写错误“:\u departmento”和添加WithValue时的拼写错误“\u departmento”。未替换参数。不应使用AddWithValue。请参阅:@BjarniRagnarsson我发现了拼写错误,但现在我有了另一个错误:42883,函数docen_registar(text,text,text,text,text,text)不存在即使选择了所有SQL命令,这如何工作*?函数
docen_registar
必须在数据库中声明/创建。可能是拼写错误,“:\u departmento”在sql语句和“_departmento”中添加WithValue。未替换参数。不应使用AddWithValue。请参阅:@BjarniRagnarsson我发现了拼写错误,但现在我有了另一个错误:42883,函数docen_registar(text,text,text,text,text,text)不存在即使选择了所有SQL命令,这如何工作*?必须在数据库中声明/创建函数
docen_registar
        private void FrmTeachers_Load(object sender, EventArgs e)
        {
            conn = new NpgsqlConnection(connstring);
            Select();
            //dgvTabela.Columns["docente_id"].HeaderText = "Teachers ID";
        }  


        private void Select()
        {
            try
            {
                conn.Open();
                sql = @"select * from docen_selecionar()";
                cmd = new NpgsqlCommand(sql, conn);
                dt = new DataTable();
                dt.Load(cmd.ExecuteReader());
                conn.Close();
                dgvTabela.DataSource = null;
                dgvTabela.DataSource = dt;
            }
            catch (Exception ex)
            {

                conn.Close();
                MessageBox.Show("Error: " + ex.Message);
            }
        }


        private void DgvTabela_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {            
            if (e.RowIndex >= 0)
            {
                txtName.Text = dgvTabela.Rows[e.RowIndex].Cells["_docente_id"].Value.ToString();
                txtID.Text = dgvTabela.Rows[e.RowIndex].Cells["_nome_docente"].Value.ToString();
                txtVAT.Text = dgvTabela.Rows[e.RowIndex].Cells["_nif_number"].Value.ToString();
                txtDepart.Text = dgvTabela.Rows[e.RowIndex].Cells["_departamento"].Value.ToString();
                txtDegree.Text = dgvTabela.Rows[e.RowIndex].Cells["_grau_academico"].Value.ToString();
            }
        }

        private void btnRegister_Click(object sender, EventArgs e)
        {
            rowIndex = -1;
            txtName.Enabled = txtDegree.Enabled = txtDepart.Enabled = txtID.Enabled = txtVAT.Enabled = true;
            txtName.Text = txtDegree.Text = txtDepart.Text = txtID.Text = txtVAT.Text = null;
            txtName.Select();
        }

        private void btnUpdate_Click(object sender, EventArgs e)
        {
            if (rowIndex < 0)
            {
                MessageBox.Show("Please choose a Teacher to update");
                return;
            }
            txtName.Enabled = txtDegree.Enabled = txtDepart.Enabled = txtID.Enabled = txtVAT.Enabled = true;
        }

        private void btnDelete_Click(object sender, EventArgs e)
        {
            if (rowIndex < 0)
            {
                MessageBox.Show("Please choose a Teacher ID to delete");
                return;
            }

            try
            {
                conn.Open();
                sql = @"select * from docen_apagar(:_docente_id)";
                cmd = new NpgsqlCommand(sql, conn);
                cmd.Parameters.AddWithValue("_docente_id", int.Parse(dgvTabela.Rows[rowIndex].Cells["docente_id"].Value.ToString()));
                if ((int)cmd.ExecuteScalar() == 1)
                {
                    MessageBox.Show("Teacher deleted successfully");
                    rowIndex = -1;
                    Select();
                }
                conn.Close();
            }
            catch (Exception ex)
            {

                conn.Close();
                MessageBox.Show("Delete fail. Please try again. Error:" + ex.Message);
            }
        }
        //save - esqueci-me de alterar o name
        private void iconButton1_Click(object sender, EventArgs e)
        {
            int result = 0;

            if (rowIndex < 0) //insert
            {
                try
                {
                    conn.Open();
                    sql = @"select * from docen_registar(:_docente_id,:_nome_docente,:_departmento,:_grau_academico,:_nif_number)";
                    cmd = new NpgsqlCommand(sql, conn);
                    cmd.Parameters.AddWithValue("_nome_docente", txtName.Text);
                    cmd.Parameters.AddWithValue("_docente_id", txtID.Text);
                    cmd.Parameters.AddWithValue("_departamento", txtDepart.Text);
                    cmd.Parameters.AddWithValue("_grau_academico", txtDegree.Text);
                    cmd.Parameters.AddWithValue("_nif_number", txtVAT.Text);
                    result = (int)cmd.ExecuteScalar();

                    conn.Close();
                    if (result == 1)
                    {
                        MessageBox.Show("Inserted new Teacher successfully");
                        Select();
                    }
                    else
                    {
                        MessageBox.Show("Inserted fail");
                    }                      

                }
                catch (Exception ex)
                {

                    conn.Close();
                    MessageBox.Show("Inserted fail, please try again. Error: " + ex.Message);
                }
            }
            else //update
            {

                try
                {
                    conn.Open();
                    sql = @"select * from docen_update(:_docente_id,:_nome_docente,:_departmento,:_grau_academico,:_nif_number)";
                    cmd = new NpgsqlCommand(sql, conn);
                    cmd.Parameters.AddWithValue("_docente_id", int.Parse(dgvTabela.Rows[rowIndex].Cells["docente_id"].Value.ToString()));
                    cmd.Parameters.AddWithValue("_nome_docente", txtName.Text);
                    cmd.Parameters.AddWithValue("_docente_id", txtID.Text);
                    cmd.Parameters.AddWithValue("_departamento", txtDepart.Text);
                    cmd.Parameters.AddWithValue("_grau_academico", txtDegree.Text);
                    cmd.Parameters.AddWithValue("_nif_number", txtVAT.Text);
                    result = (int)cmd.ExecuteScalar();
                    conn.Close();
                    if (result == 1)
                    {
                        MessageBox.Show("Successfully updated");
                        Select();
                    }
                    else
                    {
                        MessageBox.Show("Updated fail, please try again.");
                    }

                }
                catch (Exception ex)
                {

                    conn.Close();
                    MessageBox.Show("Updated fail, please try again. Error: " + ex.Message);
                }                

            }
            result = 0;
            txtName.Text = txtDegree.Text = txtDepart.Text = txtID.Text = txtVAT.Text = null;
            txtName.Enabled = txtDegree.Enabled = txtDepart.Enabled = txtID.Enabled = txtVAT.Enabled = false;
        }
    }
}