C# 数据网格视图,SQL 服务器:Select 多行然后将具有指定列的选定行插入 SQL table
C# Data grid view, SQL Server: Select multiple Rows then insert selected rows with specified columns into SQL table
在我当前的应用程序中,我有一段代码允许我 select 数据网格视图中的单行并将所有列信息存储到一个变量中以执行我想要的操作。我主要用它来将信息从一个 SQL 数据库 table 发送到另一个。它非常适合只发送一行内的指定单元格。
下面是我如何做一行:
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..
但是,我现在希望能够 select 多行,并且只将这些行中的指定列插入 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();
}
}
...
调试时我的 dataGridView.SelectedRows.Count; i++
似乎没有增加并且保持在 0...我在尝试 return selected 时收到错误行到一个字符串。我的 selected 行不应该仍然是 return 值吗?
我假设我的循环是错误的。
谁能帮我解决我的问题?
只需为每个语句使用一个
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
}
在我当前的应用程序中,我有一段代码允许我 select 数据网格视图中的单行并将所有列信息存储到一个变量中以执行我想要的操作。我主要用它来将信息从一个 SQL 数据库 table 发送到另一个。它非常适合只发送一行内的指定单元格。
下面是我如何做一行:
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..
但是,我现在希望能够 select 多行,并且只将这些行中的指定列插入 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();
}
}
...
调试时我的 dataGridView.SelectedRows.Count; i++
似乎没有增加并且保持在 0...我在尝试 return selected 时收到错误行到一个字符串。我的 selected 行不应该仍然是 return 值吗?
我假设我的循环是错误的。
谁能帮我解决我的问题?
只需为每个语句使用一个
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
}