
SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.UseInternalTransaction)
sqlbulkcopy.DestinationTableName = "Table_1"//数据库中的表名
sqlbulkcopy.WriteToServer(dataset.Tables[0])
//2、使用sqlcommand.executenonquery()方法插入
foreach (DataRow datarow in datatable.Rows)
{
string sql = "INSERT INTO [Table_1]
([CompanyName],[CompanyCode],[Address],[Owner],[Memo])" +
"VALUES('" + datarow["CompanyName"].ToString() + "'" +
",'" + datarow["CompanyCode"].ToString() + "'" +
",'" + datarow["Address"].ToString() + "'" +
",'" + datarow["Owner"].ToString() + "'" +
",'" + datarow["Memo"].ToString() + "')"
using (SqlConnection sqlconn = new SqlConnection(connectionString))
{
sqlconn.Open()
SqlCommand sqlcommand = new SqlCommand(sql, sqlconn)
sqlcommand.ExecuteNonQuery()
sqlconn.Close()
}
}
使用sqldataadapter.update(dataset,tablename)
SqlCommand insertcommand = new SqlCommand("INSERT INTO [Table_1]([CompanyName],[CompanyCode],[Address],[Owner],[Memo])" +
"VALUES(@CompanyName, @CompanyCode,@Address,@Owner,@Memo)",new SqlConnection(connectionString))
insertcommand.Parameters.Add("@CompanyName", SqlDbType.NChar, 50, "CompanyName")
insertcommand.Parameters.Add("@CompanyCode", SqlDbType.NChar, 25, "CompanyCode")
insertcommand.Parameters.Add("@Address", SqlDbType.NChar, 255, "Address")
insertcommand.Parameters.Add("@Owner", SqlDbType.NChar, 25, "Owner")
insertcommand.Parameters.Add("@Memo", SqlDbType.NChar, 255, "Memo")
sqldataadapter.InsertCommand = insertcommand
sqldataadapter.Update(dataset, "Table_1")
使用sqlbulkcopy.writetoserver(datatable)
SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.UseInternalTransaction)
sqlbulkcopy.DestinationTableName = "Table_1"//数据库中的表名
sqlbulkcopy.WriteToServer(dataset.Tables[0])
sqlbulkcopy 神级 数据拷贝System.Data.SqlClient 命名空间
亲测,100万 数据 20字段 5000毫秒 (5秒)
public void InsertDatatable(Datatable datatableA)
{
SqlConnection destinationConnection = new SqlConnection(connectionString) //创建一个数据库连接;
destinationConnection.Open()
SqlBulkCopy bulkCopy =new SqlBulkCopy(destinationConnection)// 实例化 sqlbulkcopy
bulkCopy.DestinationTableName ="dbo.DatatableA"// 目标表名称/
///bulkCopy.ColumnMappings.Add("ProductID", "ProductID")//映射 目标和源的字段 如果字段都相同,可不写,会自动匹配相同字段插入
///bulkCopy.ColumnMappings.Add("ProductName", "Name")//映射 目标和源的字段 如果字段都相同,可不写,会自动匹配相同字段插入
bulkCopy.WriteToServer(datatableA)//将传入的数据写到数据库;
}
目标表名 如果在数据库中不存在, 二十需要插入数据时再生成的话,就需要在执行这个 插入之前,先建一张表
string sql="create table xxxxxxx( filed1 varchar(100),........ )" 建好之后再 插入数据 就可以了 。
/// <summary>/// 读取Excel文件为DataTable,使用Aspose.Cells.dll
/// </summary>
/// <param name="filepath"> Excel文件的全路径 </param>
/// <returns> DataTable</returns>
public static DataTable ExcelToDataTable(string filepath)
{
DataTable dt = new DataTable()
try
{
if (!File .Exists(filepath))
{
MessageBox.Show(@"文件不存在!" ,@"提示")
return null
}
Aspose.Cells. Workbook workbook = new Aspose.Cells.Workbook()
workbook.Open(filepath)
Aspose.Cells. Worksheet worksheet = workbook.Worksheets[0]
dt = worksheet.Cells.ExportDataTable(0, 0, worksheet.Cells.MaxDataRow + 1, worksheet.Cells.MaxColumn + 1, true )//showTitle
return dt
}
catch (System.Exception e)
{
return null
}
}
存数据库就自己写吧,数据都有了
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)