.net如何将datatable数据保存到sql数据库

.net如何将datatable数据保存到sql数据库,第1张

//1、使用sqlbulkcopy.writetoserver(datatable)  

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])

问题补充:把数据库中的数据添加到DataTable中,然后把DataTable做为DataGridSqlDataAdapter sda = new SqlDataAdapter()sda.SelectCommand = cmd

软糖来回答罗。

我这里有个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复制)

如满意,请采纳,谢谢。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存