高速向数据库中插入数据
如果id使用GUID,要注意了,GUID生成的36位唯一标识
------------------------------------------------------------
bool b = false;
Console.WriteLine(Convert.ToInt32(b));
测试得知,C#中bool类型true是1,falses是0。
而SQLSERVER数据库中,bit类型true是1,false是0
//往数据库写入bit值,不支持0/1,只支持true/false
往数据库写入bit值,不支持0/1,只支持true/false
注意的是:内存表类型最好和数据库类型对应。最好是将主键的自动增长取消。现在一般也没有采用自动增长做主键了
---------------------------------------------------------------------
//一次性把所有数据都插入进去,将所有的数据都放入到datatable中,然后一次性提交给数据库
DataTable table = new DataTable(); //先建立一个空表 table.Columns.Add("UserId"); table.Columns.Add("username"); table.Columns.Add("password"); table.Columns.Add("age"); table.Columns.Add("Mail"); table.Columns.Add("Phone"); table.Columns.Add("status"); //使用循环将数据填充到空表中 for (int i = 15; i <= 1000; i++) { DataRow row = table.NewRow(); row["UserId"] = i + "d"; row["username"] = "Test" + i; row["password"] = i.ToString(); row["age"] = i; row["Mail"] = i + "aa@qq.com"; row["Phone"] = i.ToString();row["status"] = true;
//这里的判断多余,反正是测试数据,直接写死true
/*if (i % 2 == 0)
{ row["status"] = true; } else { row["status"] = false; }*/ table.Rows.Add(row); } string conn = "Server=127.0.0.1;Database=Test;user id=sa;password=789654"; using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn)) { bulkCopy.DestinationTableName = "t_users";//表名 bulkCopy.ColumnMappings.Add("UserId", "UserId"); bulkCopy.ColumnMappings.Add("username", "UserName");//第一个是table中的列,第二个是数据库中的列,区分大小写 bulkCopy.ColumnMappings.Add("password", "PassWord"); bulkCopy.ColumnMappings.Add("age", "Age"); bulkCopy.ColumnMappings.Add("Mail", "Mail"); bulkCopy.ColumnMappings.Add("Phone", "Phone"); bulkCopy.ColumnMappings.Add("status", "Status");//往数据库写入bit值,不支持0/1,只支持true/false bulkCopy.WriteToServer(table); } Console.WriteLine("OK"); Console.ReadKey();