2023年7月13日发(作者:)
guid型mysql_MySQL的哪种列类型将在C#中作为返回本问题已经有最佳答案,请猛点这⾥访问。Possible Duplicate:How should I store GUID in tables?VARCHAR将返回为将返回为byte[]但是,MySQL的哪种列将在C#中以的形式返回谢谢。编辑:我找到了答案多亏了DaveHogan,它为我提供了有关(对象关系映射)的线索我开始寻找有关Connector / NET进⾏的数据类型转换(映射)的信息。我正在使⽤MySQL Dot Net Connector(Connector / NET)Connector / NET会执⾏三种不同的情况。以下是我发现的内容:第⼀种情况:从Connnector / NET 6.1.1开始,(36)将⾃动转换为(在C#中),⽽BINARY(16)将被视为 []。第⼆种情况:如果使⽤较旧的Connector / NET,则将值传递给C#时,BINARY(16)将⾃动转换为.GUID,⽽CHAR(36)将被视为。第三种情况:如果您使⽤较新的Connector / NET(⽐6.1.1更⾼),并且要使⽤BINARY(16)AS (默认情况下不是),则必须在其中添加连接选项Old Guids = true。连接字符串。⽰例:server=localhost;user=root;password=qwerty;database=test;old guids=true;这样,CHAR(36)将被转换为,⽽BINARY(16)= 在以下⽹址了解有关旧指南的连接选项的更多信息:MySQL 5.6参考⼿册:21.2.6。连接器/⽹络连接字符串选项参考-------------------------------------------------- --------------------额外信息:如何将插⼊MySql数据库中-------------------------------------------------- --------------------这是⼀个⽰例表,我们将插⼊:CREATE `testdata` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`binary` binary(16) DEFAULT NULL,`char` char(36) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8将插⼊MySQLstring constr ="server=localhost;user=root;pwd=qwerty;database=test;";using (MySqlConnection conn = new MySqlConnection(constr)){();// Create a [] ba = new byte[16];Random rd = new Random();tes(ba); guid = new Guid(ba);// Prepare GUID values in SQL formatstring guidForChar36 = ng();string hexstring = ng(Array());string guidForBinary16 ="0x" + e("-", );string sql ="insert into testdata(`binary`,`char`)"+"values(" + guidForBinary16 +","+"'" + guidForChar36 +"');";MySqlCommand cmd = new MySqlCommand(sql, conn);eNonQuery();();}它是MSSQL中的uniqueidentifier。 也许它与MySQL类似编辑:对不起,我误解了你的问题。 你应该⽤BINARY(16)如何将其转换为取决于您是否使⽤ORM等。抱歉。您能解释⼀下什么是ORM吗?/wiki/Object-relational_mapping不,我正在使⽤MySql Dot Net Connector。 嗨,DaveHogan,感谢ORM的提⽰。我开始查找有关Connector / NET进⾏的数据类型映射的信息。这就是我发现的:从Connector / NET 6.1.1开始,默认情况下,CHAR(36)将作为返回。和版本6.1.1之前的Connector / NET版本,BINARY(16)将作为返回。我添加了我的发现(结论)并更新了我的问题。谢谢你的帮助。我使⽤EF。关于如何将byte [](binary16)转换为GUID的任何指针?当前,我执⾏d(myByteArray),但是有时由于Bytearray for GUID must be exactly 16 bytes long.⽽失败如果要最⼤程度地利⽤存储空间,可以将GUID⽤作CHAR(16)⼆进制⽂件。或使⽤char(36)没有。不要将char⽤于⼆进制数据。 char / varchar / text字段受字符集转换规则的约束,并且可以轻松处理⼆进制数据。始终对⼆进制数据使⽤⼆进制/ varbinary / blob类型。嗨,Ravindra,我发现默认情况下从Connector / NET 6.1.1开始,CHAR(36)将作为返回。和版本6.1.1之前的Connector / NET版本,BINARY(16)将作为返回。我添加了我的发现(结论)并更新了我的问题。还是要谢谢你的帮助。
发布者:admin,转转请注明出处:http://www.yc00.com/web/1689245817a225589.html
评论列表(0条)