数据是如何存入数据库中的

数据是如何存入数据库中的,第1张

在一些数据量比较大,而且 *** 作数据库频繁的。此时需要将数据表datatable整块的存入数据库中。

首先得新建一个数据库

DataTable once_rec_date = new DataTable()

这个数据库得跟目标数据库的列的位置和大小都得一样。特别是类型,和位置。就是列的位置和目标数据库的位置,顺序得 一模一样。因为都是块存储,所以地址什么的都得一样,千万不能少一列,自增列可以空在那边。

扩展资料

数据库入门基础知识:

数据库的分类

关系型数据库: 经过数学理论验证 可以保存现实生活中的各种关系数据, 数据库中存储数据以表为单位;非关系型数据库:通常用来解决某些特定的需求如:数据缓存,高并发访问。 存储数据的形式有多种,举例:Redis数据库:通过键值对的形式存储数据。

创建数据库:CREATE DATABASE database_name

删除数据库:DROP DATABASE database_name

选择数据库:USE database_name

创建数据表:CREATE TABLE table_name (column_name column_type)

删除数据表:DROP TABLE table_name

更新数据表信息:

添加表字段:ALTER TABLE table_name ADD new_column DATATYPE

使用FIRST关键字可以将新增列的顺序调整至数据表的第一列:ALTER TABLE table_name ADD new_column DATATYPE FIRST

使用AFTER关键字可以将新增列调整至数据表的指定列之后:ALTER TABLE table_name ADD new_column DATATYPE AFTER old_column

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

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


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存