2017-01-26 11 views
-2

В моем текущем приложении у меня есть фрагмент кода, который позволяет мне выбрать одну строку в виде сетки данных и сохранить все информацию о столбцах в переменную, чтобы сделать то, что я хочу. Я использую это прежде всего для отправки информации из одной таблицы базы данных SQL в другую. Это отлично подходит для отправки только определенных ячеек в строке.C# Вид сетки данных, SQL Server: выберите несколько строк, затем вставьте выбранные строки с указанными столбцами в таблицу SQL

Вот как я одну строку:

string ID = dataGridView1.SelectedRows[0].Cells[0].Value + string.Empty; 
      string itemOne= dataGridView1.SelectedRows[0].Cells[1].Value + string.Empty; 
      string itemTwo= dataGridView1.SelectedRows[0].Cells[2].Value + string.Empty; 
      string itemThree= dataGridView1.SelectedRows[0].Cells[3].Value + string.Empty; 


      var vItemOne = itemOne; 
      var vItemTwo= itemTwo; 
      var vItemThree= itemThree; 
      // ETC.. 

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

Я пробовал модифицировать приведенный выше код для работы ... очевидно, что он не работает.

Я считаю, что мне нужен цикл, я не очень часто использовал циклы, поэтому я не уверен, как сделать его циклом, пропустить определенные столбцы, а затем вставить в базу данных.

Это то, что я сейчас пытаюсь, однако, похоже, я что-то испортил.

using (SqlConnection con = new SqlConnection(Connection.MTRDataBaseConn)) 
      { 

      for (int i = 0; i < dataGridView1.SelectedRows.Count; i++) 
      { 
       con.Open(); 
       SqlCommand cmd = new SqlCommand(); 
       cmd.CommandText = "INSERT INTO dbo.[" + txtJobName.Text + "] ([Item One], [Item Two], [Item Three]) VALUES(@ItemOne,@ItemTwo,@ItemThree)"; 

       cmd.Connection = con; 

       string strItemOne = this.dataGridView1.SelectedRows[i].Cells[1].Value + string.Empty; 
       string strItemTwo = this.dataGridView1.SelectedRows[i].Cells[2].Value + string.Empty; 
       string strItemThree = this.dataGridView1.SelectedRows[i].Cells[3].Value + string.Empty; 


       //Parameters 
       cmd.Parameters.AddWithValue("@ItemOne", strItemOne); 
       cmd.Parameters.AddWithValue("@ItemTwo", strItemTwo); 
       cmd.Parameters.AddWithValue("@ItemThree", strItemThree); 

       //execute 
       cmd.ExecuteNonQuery(); 

       //close connection 
       con.Close(); 
      } 
     } 

...

Хотя Debugging Мой dataGridView.SelectedRows.Count; i++ не кажется, растет и оставаясь при 0 ... Я получаю сообщение об ошибке при попытке вернуть выбранную строку в строку , Не должны ли мои выбранные строки возвращать значение?

Я полагаю, что моя петля ошибочна.

Может ли кто-нибудь помочь мне с моей проблемой?

+0

вам нужно сделать цикл Еогеасп, а также использовать что-то вроде этого 'Еогеасп (DataGridViewRow строки в dataGridView.SelectedRows)' оттуда вы должны иметь переменная, объявленная за пределами для всех и всех столбцов, так что вы можете передать это как параметр – MethodMan

+0

Возможный дубликат [Что такое исключение NullReferenceException и как его исправить?] (http://stackoverflow.com/questions/4660142/what -is-a-nullreferenceexception-and-how-do-i-fix-it) –

+0

Спасибо @MethodMan, я попробую. Это не дублирующийся пост ... – Mokey

ответ

0

Просто нужно использовать для каждого оператора

string itemOne= dataGridView1.SelectedRows[0].Cells[1].Value + string.Empty; 
string itemTwo= dataGridView1.SelectedRows[0].Cells[2].Value + string.Empty; 
string itemThree= dataGridView1.SelectedRows[0].Cells[3].Value + string.Empty; 

var vItemOne = itemOne; 
var vItemTwo= itemTwo; 
var vItemThree= itemThree; 

foreach (DataGridViewRow row in dataGridView1.SelectedRows) 
{ 
    //Insert Query Here 
} 

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

  • Нет связанных вопросов^_^