C#中如何将DataTable保存到数据库?

C#中如何将DataTable保存到数据库?,第1张

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),........ )" 建好之后再 插入数据 就可以了 。

软糖来回答罗。

我这里有个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的新行

{

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10860630.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存