【问题标题】:calling method from another class C#从另一个类 C# 调用方法
【发布时间】:2014-01-31 15:19:33
【问题描述】:

我有这个方法,它必须向我的数据库中插入一些数据

public Zakaznik_Mapper()
        {


        public bool Insert(int ID_zakaznik, String Name, String LastName, String Login, String Password, int Number, String Email, String Adress)
        {
            try
            {
                conn.Open();
                tran = conn.BeginTransaction(System.Data.IsolationLevel.Serializable);
                SqlCommand insertCommand = new SqlCommand("INSERT INTO Zakaznik VALUES (@ID_zakaznik, @Name, @LastName, @Login, @Password, @Number, @Email, @Adress );", conn, tran);
                insertCommand.Parameters.Add(new SqlParameter("@ID_zakaznik", SqlDbType.Int) { Value = ID_zakaznik });
                insertCommand.Parameters.Add(new SqlParameter("@Name", SqlDbType.VarChar) { Value = Name });
                insertCommand.Parameters.Add(new SqlParameter("@LastName", SqlDbType.VarChar) { Value = LastName });
                insertCommand.Parameters.Add(new SqlParameter("@Login", SqlDbType.VarChar) { Value = Login });
                insertCommand.Parameters.Add(new SqlParameter("@Password", SqlDbType.VarChar) { Value = Password });
                insertCommand.Parameters.Add(new SqlParameter("@Number", SqlDbType.Int) { Value = Number });
                insertCommand.Parameters.Add(new SqlParameter("@Email", SqlDbType.VarChar) { Value = Email });
                insertCommand.Parameters.Add(new SqlParameter("@Adress", SqlDbType.VarChar) { Value = Adress });

                insertCommand.ExecuteNonQuery();

                tran.Commit();
                conn.Close();
                return true;
            }
            catch (SqlException e)
            {
                tran.Rollback();
                conn.Close();
                Console.WriteLine(e);
                return false;
            }
        }

我想从 UlozZakaznik() 调用方法 Insert,但我收到错误类型“方法 'Insert' 没有重载需要 0 个参数”如果有人可以帮忙,我会很高兴 :)

 public void UlozZakaznik()
    {
        DataTable data_zakaznik = new DataTable("Zakazka");
        data_zakaznik.Columns.Add("ID_Zakaznik");
        data_zakaznik.Columns.Add("Name");
        data_zakaznik.Columns.Add("Lastname");
        data_zakaznik.Columns.Add("Login");
        data_zakaznik.Columns.Add("Password");
        data_zakaznik.Columns.Add("Number");
        data_zakaznik.Columns.Add("Email");
        data_zakaznik.Columns.Add("Adress");

        Zakaznik_Mapper zakaznik = new Zakaznik_Mapper();

        Zakaznik zakaznik1 = new Zakaznik();
        zakaznik1.ID_zakaznik = Convert.ToInt32(dataGridView1.Rows[dataGridView1.RowCount - 2].Cells[0].Value);
        zakaznik1.Name = Convert.ToString(dataGridView1.Rows[dataGridView1.RowCount - 2].Cells[1].Value);
        zakaznik1.LastName = Convert.ToString(dataGridView1.Rows[dataGridView1.RowCount - 2].Cells[2].Value);
        zakaznik1.Login = Convert.ToString(dataGridView1.Rows[dataGridView1.RowCount - 2].Cells[3].Value);
        zakaznik1.Password = Convert.ToString(dataGridView1.Rows[dataGridView1.RowCount - 2].Cells[4].Value);
        zakaznik1.Number = Convert.ToInt32(dataGridView1.Rows[dataGridView1.RowCount - 2].Cells[5].Value);
        zakaznik1.Email = Convert.ToString(dataGridView1.Rows[dataGridView1.RowCount - 2].Cells[6].Value);
        zakaznik1.Adress = Convert.ToString(dataGridView1.Rows[dataGridView1.RowCount - 2].Cells[7].Value);

        if (dataGridView1.Rows[dataGridView1.RowCount - 2].Cells[0].Value != null
            && dataGridView1.Rows[dataGridView1.RowCount - 2].Cells[1].Value != null
            && dataGridView1.Rows[dataGridView1.RowCount - 2].Cells[2].Value != null 
            && dataGridView1.Rows[dataGridView1.RowCount - 2].Cells[3].Value != null
            && dataGridView1.Rows[dataGridView1.RowCount - 2].Cells[4].Value != null
            && dataGridView1.Rows[dataGridView1.RowCount - 2].Cells[5].Value != null
            && dataGridView1.Rows[dataGridView1.RowCount - 2].Cells[6].Value != null
            && dataGridView1.Rows[dataGridView1.RowCount - 2].Cells[7].Value != null
            )
        {
            data_zakaznik.Rows.Add(zakaznik1.ID_zakaznik, zakaznik1.Name, zakaznik1.LastName, zakaznik1.Login, zakaznik1.Password, zakaznik1.Number, zakaznik1.Email, zakaznik1.Adress);

            zakaznik.Insert();//problem is here "Error type: No overload for method 'Insert' takes 0 arguments"

        }
    }

【问题讨论】:

  • 错误告诉你问题是什么;唯一存在的插入方法签名是public bool Insert(int ID_zakaznik, String .....other parameters) 要么提供参数,要么定义不带参数的插入,要么提供默认值。

标签: c# class methods call


【解决方案1】:

你需要为你的函数提供参数。

这里:

public bool Insert(int ID_zakaznik, 
                   String Name, 
                   String LastName, 
                   String Login, 
                   String Password, 
                   int Number, 
                   String Email, 
                   String Adress)
//                 ^^^^^^^^^^^^^^ arguments

该函数希望您向它传递一些可以使用的东西。

所以这个:

zakaznik.Insert();

应该是这样的:

zakaznik.Insert(id_here, name_here, last_name_here, ..., ..., ...); // etc

【讨论】:

    【解决方案2】:

    错误很清楚,你不能不传递数据就调用它,它需要一定数量的参数,所以你必须传递它们。

    这是为了工作或学校还是只是一种爱好?如果是为了工作/学校,您应该联系负责您的人员并寻求一些深入的建议,因为您确实需要坐几个小时来了解它。

    但是在您的具体情况下,我假设您正在寻找的是替换

    zakaznik.Insert();
    

    zakaznik.Insert(zakaznik1.ID_zakaznik, zakaznik1.Name, zakaznik1.LastName, zakaznik1.Login, zakaznik1.Password, zakaznik1.Number, zakaznik1.Email, zakaznik1.Adress);
    

    【讨论】:

    • 它是给学校的,我有时间就在学习,但有时我会犯这样愚蠢的错误,即使我得到了解决方案。我把 zakaznik.Insert(zakaznik.ID_zakaznik...) 谢谢你的帮助
    【解决方案3】:

    该错误准确地告诉您您做错了什么。您的 Insert() 方法需要 8 个参数,但您提供的是 0 个。

    【讨论】:

      猜你喜欢
      • 2020-10-20
      • 1970-01-01
      • 2013-05-17
      • 2013-02-17
      • 1970-01-01
      • 1970-01-01
      • 2014-02-07
      • 1970-01-01
      • 2011-09-09
      相关资源
      最近更新 更多