2014-01-12 4 views
-3

У меня есть этот метод, который должен вставить данные в свою базу данныхвызова метода из другого класса C#

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

и я хочу, чтобы вызвать метод Insert из UlozZakaznik(), но я получаю тип ошибки «Нет перегрузки метода «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" 

     } 
    } 
+0

Погрешность говорит вам, что проблема; единственной сигнатурой метода, которая существует для вставки, является 'public bool Insert (int ID_zakaznik, String ..... другие параметры)' либо поставлять параметры, определять вставку, которая не принимает аргументов, либо предоставлять значения по умолчанию. – Chris

ответ

1

Ошибка такая же ясная, как и она получается, вы не можете просто вызвать ее, не передавая ее данные, она ожидает определенное количество параметров, чтобы вы должны пройти их.

Это для работы или учебы или просто для хобби? Если это для работы/школы, вы должны связаться с тем, кто отвечает за вас, и просить совета в глубине, поскольку вам действительно нужно сидеть несколько часов и учиться вокруг него.

Однако в вашем конкретном случае я предполагаю, что вы ищете замену

zakaznik.Insert(); 

с

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

его для школы, я учусь, когда у меня есть время, но иногда я делаю такие глупые ошибки, как это, даже когда я получил разрешение на глаза. Я положил заказник.Инсер (zakaznik.ID_zakaznik ...) спасибо за вашу помощь – user3188501

4

вы должны предоставить аргументы для вас работать.

Здесь:

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 
1

ошибка говорит вам именно то, что вы делаете неправильно. Ваш метод Insert() требует 8 аргументов, но вы предоставляете 0.

Смежные вопросы