高速向数据库中插入数据
如果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 + "[email protected]";
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();