【发布时间】:2015-10-22 23:38:09
【问题描述】:
我想将 datagridview 行插入到 sql server 表中... 现在使用此代码在表中插入来自 DataGridView 的行值:
private DataTable GetDataTableFromDGV(DataGridView dgv)
{
var dt = new DataTable();
foreach (DataGridViewColumn column in dgv.Columns)
{
if (column.Visible)
{
dt.Columns.Add();
}
}
object[] cellValues = new object[dgv.Columns.Count];
foreach (DataGridViewRow row in dgv.Rows)
{
for (int i = 0; i < row.Cells.Count; i++)
{
cellValues[i] = row.Cells[i].Value;
}
dt.Rows.Add(cellValues);
}
return dt;
}
private void InsertDTtoDB(string ConnectionString, string TableName, DataGridView DGV)
{
DataTable dt = new DataTable();
dt = GetDataTableFromDGV(DGV);
using (SqlConnection cn = new SqlConnection(ConnectionString))
{
cn.Open();
using (SqlBulkCopy copy = new SqlBulkCopy(cn))
{
copy.ColumnMappings.Add(0, 1);
copy.ColumnMappings.Add(1, 2);
copy.ColumnMappings.Add(2, 3);
copy.ColumnMappings.Add(3, 4);
copy.ColumnMappings.Add(4, 5);
copy.DestinationTableName = TableName;
copy.WriteToServer(dt);
}
}
}
但是插入数据有问题: 来自 datatgridview 的空行(启用添加行)存储在最后一个表行中! 请注意图片帮助:
【问题讨论】:
-
你检查过
dtGetDataTableFromDGV返回的数据表内容吗? -
谢谢 .. 我是怎么做到的?
-
在
return dt;上使用断点并先检查其内容。 -
帮助...我做错了!
-
没人回答吗?
标签: c# sql datagridview sqlbulkcopy