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),........ )" 建好之后再 插入数据 就可以了 。
软糖来回答罗。
我这里有个SQL连接数据库的示例,可以参考下。
public void 数据集测试(){
//(1.连接)建立到数据库的 连接 conn
SqlConnection conn = new SqlConnection()
conn.ConnectionString = @"Data Source = (LocalDB)\MSSQLLocalDB AttachDbFilename = J:\数据库\SQLDB\NewDB.mdf Integrated Security = True Connect Timeout = 5"
//(2.打开)
conn.Open()
string 表名 = "Users"
using (conn)
{
//(3.适配)适配器 da 和 数据集 ds
da = new SqlDataAdapter()
ds = new DataSet("DataSet1")
// 将DataTable添加到DataSet
ds.Tables.Add(dt)
// 将DataSet的修改提交至“数据库”
SqlCommandBuilder mySqlCommandBuilder = new SqlCommandBuilder(da)
da.Update(ds, dt.TableName)
}
//(6.释放资源)
conn.Close()
conn.Dispose()
//注意:在修改、删除等 *** 作中表必须定义主键,select的字段也必须包含主键,
//否则会抛出异常“对于不返回任何键列信息的 SelectCommand,不支持 UpdateCommand 的动态 SQL 生成。”
}
上面的dt变量就是你的表,需要给它指定一个TableName名字。
连接字符串需要改成你数据库的,在服务器资源管理器>数据连接>属性页面>连接字符串
(鼠标选中然后按Ctrl+C复制)
如满意,请采纳,谢谢。
就是datagridview的行是否为新增还是修改的还是已保存(Unchange)如下:
if
(this.dataGridView1.Rows[0].DataBoundItem==null)//未写到datatable的新行
{
}
else
{
if
(((DataRowView)this.dataGridView1.Rows[0].DataBoundItem).Row.RowState
==
DataRowState.Added)//
已写到datatable的新行
{
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)