var biztypeList = BiztypeList(biztype);
for (int i = 0; i < biztypeList.Length; i++)
{
string buss = biztypeList[i];
}
var custfeekeyList = CustFeeKeyList(custfeekey);
for (int i = 0; i < custfeekeyList.Length; i++)
{
var cusfkey = custfeekeyList[i];
}
每个list里面都有3个数据,怎么遍历3次在数据插入数据
这样写肯定会只获取数组最后一个,你把实体对象定义到循环里面去。还有两个数组的长度是不是一样的?假设a数组三条数据,b数组四条数据,你需要数据库插入几条数据?
如果是sqlserver数据库,使用SqlConnection,SqlCommand和事务
using(SqlConnection conn=new SqlConnection(连接字符串))
{
conn.Open();
var transaction = conn.BeginTransaction();
for()//循环逻辑,使用你的业务代码
{
string sql="";
SqlCommand cmd= conn.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
}
transaction.Commit();
}
也可以构建这样的sql,一次批量提交:insert into 表名(列名1,列名2) values(值1,值2),(值3,值4)
另外如果数据量很大也可以使用SqlBulkCopy类批量提交
总之,要使用一个数据库连接,不要每次循环都打开和关闭连接
用反射+拼Sql
批量插入数据
能不能具体点,有没有代码
@Yimi依米: 用这个就行SqlBulkCopy
你看看他的https://www.cnblogs.com/guxingy/p/9629078.html
@竜咚咚: 跟我需要的不一样
@Yimi依米: 你不就是想把你list中的数据插到库中吗
@竜咚咚: 嗯嗯。有两个集合,每一次插需要获取两个集合的各一个值
怎么破?
我这样写,只能取到最后一次遍历的值。
我想每一次都能取得集合1和集合2的对应值
@Yimi依米: 你这样肯定是最后的值了
@竜咚咚: 对呀,所以我就想知道应该怎么写
@Yimi依米: var businesstypelist = "";
var biz = 0;
var Customer = 0;
var custfeekey = "";
for (int i = 0; i < businesstypelist.Length; i++)
{
biz = Convert.ToInt32(businesstypelist[i]);
Customer =Convert.ToInt32( custfeekey[i]);
//这里可以循环映射成 DataTable
}
//这里用SqlBulkCopy 直接批量插入到表中
@Yimi依米: 最好把业务背景和表结构描述一下,代码中的实体类与表的对应关系是怎样的,因为别人无法根据代码片段准确推测出业务逻辑