Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对象引用不是实例c的默认值_C#_Postgresql_Visual Studio_Datagridview_Object Reference - Fatal编程技术网

C# 对象引用不是实例c的默认值

C# 对象引用不是实例c的默认值,c#,postgresql,visual-studio,datagridview,object-reference,C#,Postgresql,Visual Studio,Datagridview,Object Reference,Hellow伙计们,我正在创建一个用于检查学生的桌面应用程序, 在我将我的数据库PostgresWith project链接并显示我的表格后,每当我尝试删除某些内容时,它都会显示此错误,ID_student和delete/UPDATE按钮会使用第一列更改位置,这是正常的 然后在我点击删除按钮之后 但在我的数据库中,用户被删除,在我的题词中添加了相同的错误apear,但我得到了这个错误 我搜索了许多解决方案,检查了我的变量,几乎失去了希望 这是我的桌子 private new void Sele

Hellow伙计们,我正在创建一个用于检查学生的桌面应用程序, 在我将我的数据库PostgresWith project链接并显示我的表格后,每当我尝试删除某些内容时,它都会显示此错误,ID_student和delete/UPDATE按钮会使用第一列更改位置,这是正常的

然后在我点击删除按钮之后 但在我的数据库中,用户被删除,在我的题词中添加了相同的错误apear,但我得到了这个错误 我搜索了许多解决方案,检查了我的变量,几乎失去了希望 这是我的桌子

 private new void Select()
        {
            try
            {
                conn.Open();
                sql= @"select  etudiant.id_etudiant,etudiant.nom,etudiant.prenom,etudiant.age,etudiant.sexe,etudiant.num,class.nom_class
                        from etudiant
                        inner join class on etudiant.classess=class.id_class";
                cmd = new NpgsqlCommand(sql, conn);
                dt = new DataTable();
                dt.Load(cmd.ExecuteReader());



                conn.Close();
                bunifuCustomDataGrid1.DataSource = null;//resete
                bunifuCustomDataGrid1.DataSource = dt;
            }
            catch ( Exception ex)
            {
                conn.Close();
                MessageBox.Show("ERROR" + ex.Message);
            }
        }
这是我的删除

        {
            if (bunifuCustomDataGrid1.Columns[e.ColumnIndex].Name == "Delete")
            {


                try
                {
                    conn.Open();
                    sql = @"Select   all from deleteEtudiant(:id_)  ";
                    cmd = new NpgsqlCommand(sql, conn);
                    cmd.Parameters.AddWithValue("id_", int.Parse(bunifuCustomDataGrid1.Rows[e.RowIndex].Cells["ID"].Value.ToString()));
                    if ((int)cmd.ExecuteScalar() == 1)
                    {
                        MessageBox.Show("Deleted");



                    }



                    conn.Close();

                }
                catch (Exception ex)
                {
                    conn.Close();
                    MessageBox.Show("User deleted don't forget the bug yassine" + ex.Message);

                }
            }
            if (bunifuCustomDataGrid1.Columns[e.ColumnIndex].Name == "Update")
            {

                try
                {
                    conn.Open();
                    sql = @"Select * from updateETUDIANT(':id_,:ST_Firstname ,:ST_prenom ,:ST_Age,:ST_Sexe,:ST_num');
";
                    cmd = new NpgsqlCommand(sql, conn);
                    cmd.Parameters.AddWithValue("id_", int.Parse(bunifuCustomDataGrid1.Rows[e.RowIndex].Cells["ID_etudiant"].Value.ToString()));
                    cmd.Parameters.AddWithValue("ST_Firstname", (bunifuCustomDataGrid1.Rows[e.RowIndex].Cells["Nom"].Value.ToString()));

                    if ((int)cmd.ExecuteScalar() == 1)
                    {
                        MessageBox.Show("UPDATED");

                        Select();


                    }



                    conn.Close();

                }
                catch (Exception ex)

                {
                    conn.Close();
                    MessageBox.Show("User UPDATED"+ex.Message);
                    Select();

                }


            }
很抱歉发了这么长的帖子,我希望你能告诉我如何改进

编辑:我有一个小问题,我的问题是错误的吗

 public void Ajouter_Click(object sender, EventArgs e)
        {
            try
            {
                conn.Open();
                sql = "insert into etudiant (Nom, prenom, sexe) " +
                     "values(@Nom, @prenom,  @sexe);";
                cmd = new NpgsqlCommand(sql, conn);
                cmd.Parameters.AddWithValue("nom", bunifuMaterialTextbox1.Text);
                cmd.Parameters.AddWithValue("prenom", bunifuMaterialTextbox2.Text);
                //cmd.Parameters.AddWithValue("Age", bunifuMaterialTextbox2.ToString());//
                cmd.Parameters.AddWithValue("sexe", bunifuMaterialTextbox3.Text);
                //cmd.Parameters.AddWithValue("Num", bunifuMaterialTextbox6.Text);
                //cmd.Parameters.AddWithValue("Classess", bunifuMaterialTextbox7.Text);
                 int result = (int)cmd.ExecuteScalar();






                if (result==1)
                {
                    conn.Close();

                    MessageBox.Show("Etudinat ajouter");

                }


            }
            catch (Exception ex)
            {
                MessageBox.Show("ERROR" + ex.Message);
                conn.Close();

            }


        }





它给了我与删除对象相同的错误对象引用

我的答案是,您的选择是错误的?:

try
                {
                    conn.Open();
                    sql = @"Select   all from deleteEtudiant(:id_)  ";
                    cmd = new NpgsqlCommand(sql, conn);
                    cmd.Parameters.AddWithValue("id_", int.Parse(bunifuCustomDataGrid1.Rows[e.RowIndex].Cells["ID"].Value.ToString()));
                    if ((int)cmd.ExecuteScalar() == 1)
                    {
                        MessageBox.Show("Deleted");



                    }
是否应该从deleteTudiant:id_u2;中选择*

编辑:对其他问题的回答:

  conn.Open();
                sql = "insert into etudiant (Nom, prenom, sexe) " +
                     "values(@Nom, @prenom,  @sexe);";
                cmd = new NpgsqlCommand(sql, conn);
                cmd.Parameters.AddWithValue("nom", bunifuMaterialTextbox1.Text);
                cmd.Parameters.AddWithValue("prenom", bunifuMaterialTextbox2.Text);
                //cmd.Parameters.AddWithValue("Age", bunifuMaterialTextbox2.ToString());//
                cmd.Parameters.AddWithValue("sexe", bunifuMaterialTextbox3.Text);
                //cmd.Parameters.AddWithValue("Num", bunifuMaterialTextbox6.Text);
                //cmd.Parameters.AddWithValue("Classess", bunifuMaterialTextbox7.Text);
                 int result = (int)cmd.ExecuteScalar();
您需要在参数中输入“@”。这样地: 因为在值中,参数名是@Nom、@prenom、@sexe

cmd = new NpgsqlCommand(sql, conn);
                        cmd.Parameters.AddWithValue("@nom", bunifuMaterialTextbox1.Text);
                        cmd.Parameters.AddWithValue("@prenom", bunifuMaterialTextbox2.Text);
    cmd.Parameters.AddWithValue("@sexe", bunifuMaterialTextbox3.Text);

我认为问题在于ExecuteScalar,使用ExecuteOnQuery代替它

int result = (int)cmd.ExecuteScalar();
替换为:

int result = cmd.ExecuteNonQuery();

首先,删除删除代码中的try-catch块,然后查看未设置的变量。哪一行导致错误-您是否尝试过在delete中的try块顶部添加断点?另外,请不要用您不关心的内容和屏幕截图来打扰我们,我们不关心。网站规则要求提供一个最小的示例-因此抛出错误的代码+确切的错误是的,复制/粘贴实际上已经足够了。谢谢你,先生,它可以工作,但它仍然是一样的,在我删除帖子后,行在应用程序中不会被删除,直到我重新打开它。你需要更新你的gridview。您可以再次调用Select方法,因此它将从数据库更新整个Gridview。或者Gridview类应该有一个方法来删除您试图删除的行。我还更新了我对另一个问题的回答。仍然是相同的错误,但它已添加到数据库中。也许此站点可以帮助您。我有一个问题,如何更改“cmd.Parameters”。AddWithValue@age,bunifuMaterialTextbox1.Text;'使用parse?cmd.Parameters字符串。AddWithValue@age,bunifuMaterialTextbox1.Text!=字符串是空的吗?bunifuMaterialTextbox1.Text:DBNull.Value;如果“年龄”文本框为空,则数据库中的年龄值将为空。在我做了所有事情之后,我有一个我不知道何时删除的错误。它告诉我已删除,然后表将被删除,默认表将被删除,就像我的postgres数据库中的表一样。有什么问题吗?