Asp.net 将ADO.Net数据表插入SQL表
我目前实施的解决方案太糟糕了 我用Asp.net 将ADO.Net数据表插入SQL表,asp.net,sql-server,ado.net,insert,bulkinsert,Asp.net,Sql Server,Ado.net,Insert,Bulkinsert,我目前实施的解决方案太糟糕了 我用表示。。。循环,用于将ADO.NET数据表中的记录插入SQL表 我想立即将数据表插入SQL表,而无需迭代 这是可能的,还是我要求太多了?我想您正在寻找。您可以将整个DataTable作为单个表值参数传递,然后立即插入整个TVP。以下是来自的示例: TVP仅在SQL 2008中可用。您也可以尝试以下方法 private void button1_Click(object sender, EventArgs e) { tabevent(); Data
表示。。。循环
,用于将ADO.NET数据表中的记录插入SQL表
我想立即将数据表插入SQL表,而无需迭代
这是可能的,还是我要求太多了?我想您正在寻找。您可以将整个DataTable作为单个表值参数传递,然后立即插入整个TVP。以下是来自的示例:
TVP仅在SQL 2008中可用。您也可以尝试以下方法
private void button1_Click(object sender, EventArgs e)
{
tabevent();
DataSet ds = new DataSet();
DataTable table = new DataTable("DataFromDGV");
ds.Tables.Add(table);
foreach (DataGridViewColumn col in dataGridView1.Columns)
table.Columns.Add(col.HeaderText, typeof(string));
foreach (DataGridViewRow row in dataGridView1.Rows)
{
table.Rows.Add(row);
foreach (DataGridViewCell cell in row.Cells)
{
table.Rows[row.Index][cell.ColumnIndex] = cell.Value;
}
}
// DataTable ds1changes = ds1.Tables[0].GetChanges();
if (table != null)
{
SqlConnection dbConn = new SqlConnection(@"Data Source=wsswe;Initial Catalog=vb;User ID=sa;Password=12345");
SqlCommand dbCommand = new SqlCommand();
dbCommand.Connection = dbConn;
foreach (DataRow row in table.Rows)
{
if (row["quantity"] != null && row["amount"]!=null && row["itemname"]!=null)
{
if (row["amount"].ToString() != string.Empty)
{
dbCommand.CommandText =
"INSERT INTO Bill" +
"(Itemname,Participants,rate,Quantity,Amount)" +
"SELECT '" + Convert.ToString(row["itemname"]) + "' AS Itemname,'" + Convert.ToString(row["Partcipants"]) + "' AS Participants,'" + Convert.ToInt32(row["rate"]) + "' AS rate,'" +
Convert.ToInt32(row["quantity"]) + "' AS Quantity,'" + Convert.ToInt32(row["amount"]) + "' AS Amount";
dbCommand.Connection.Open();
dbCommand.ExecuteNonQuery();
if (dbCommand.Connection.State != ConnectionState.Closed)
{
dbCommand.Connection.Close();
}
MessageBox.Show("inserted");
}
}
}
}
}
这是最简单的解决方案
using (SqlConnection dbConn = new SqlConnection(connectionString))
{
dbConn.Open();
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(dbConn))
{
bulkCopy.DestinationTableName =
"dbo.MyTable";
try
{
bulkCopy.WriteToServer(myDataTable, DataRowState.Added);
}
catch (Exception ex)
{
myLogger.Error("Fail to upload session data. ", ex);
}
}
}
如果DataTable中的列与数据库表不匹配,则可以创建SqlBulkCopyColumnMapping。使用dataAdapter,它会自己创建。链接不再有效
using (SqlConnection dbConn = new SqlConnection(connectionString))
{
dbConn.Open();
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(dbConn))
{
bulkCopy.DestinationTableName =
"dbo.MyTable";
try
{
bulkCopy.WriteToServer(myDataTable, DataRowState.Added);
}
catch (Exception ex)
{
myLogger.Error("Fail to upload session data. ", ex);
}
}
}