В моем текущем приложении у меня есть фрагмент кода, который позволяет мне выбрать одну строку в виде сетки данных и сохранить все информацию о столбцах в переменную, чтобы сделать то, что я хочу. Я использую это прежде всего для отправки информации из одной таблицы базы данных 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 ... Я получаю сообщение об ошибке при попытке вернуть выбранную строку в строку , Не должны ли мои выбранные строки возвращать значение?
Я полагаю, что моя петля ошибочна.
Может ли кто-нибудь помочь мне с моей проблемой?
вам нужно сделать цикл Еогеасп, а также использовать что-то вроде этого 'Еогеасп (DataGridViewRow строки в dataGridView.SelectedRows)' оттуда вы должны иметь переменная, объявленная за пределами для всех и всех столбцов, так что вы можете передать это как параметр – MethodMan
Возможный дубликат [Что такое исключение NullReferenceException и как его исправить?] (http://stackoverflow.com/questions/4660142/what -is-a-nullreferenceexception-and-how-do-i-fix-it) –
Спасибо @MethodMan, я попробую. Это не дублирующийся пост ... – Mokey