Mysql 表 列的类型为bit(1) 采用Fastest<System.Data.DataTable> 批量插入失败 返回
测试表mysql 如下
CREATE TABLE `wuzp` (
`id` INT(11) NULL DEFAULT NULL,
`flag` BIT(1) NULL DEFAULT NULL
)
// 创建与表结构匹配的DataTable
DataTable dt = new DataTable();
dt.Columns.Add("id", typeof(int));
dt.Columns.Add("flag", typeof(bool)); // BIT(1)映射为bool 或者ulong 都失败
DataRow dr = dt.NewRow();
dr["id"] = 1111;
dr["flag"] = true;
dt.Rows.Add(dr);
DataRow dr1 = dt.NewRow();
dr1["id"] = 1112;
dr1["flag"] = false;
dt.Rows.Add(dr1);
db.Fastest<System.Data.DataTable>().AS("wuzp").BulkCopy(dt);

结果false 的列位null
如果
dt.Columns.Add("flag", typeof(ulong));
flag 插入后列都为1
热忱回答(2)
-
fate sta VIP0
2025/7/24mysql bulkcopy需要用这个类型 tinyint(1)
bit是sqlserver中用的。
0 回复 -
清水无大鱼 VIP0
2025/7/24@fate sta:
没办法 是迁移数据 带bit 类型的 做了转换
List<Dictionary<string, object>> dc = db.Utilities.DataTableToDictionaryList(destDataTable);
db.Insertable(dc).AS("wzp").ExecuteCommand();
不带 bit 的表 用 bulkcopy
0 回复