MySQLDriverCS 不支持问题解决 Uint 4.0 .net 2.0
2011-03-01 11:23
155 查看
项目需要要有C#访问Mysql数据库,MySQL.Data.dll 这个库不知道什么原因,读以前的数据库时,字符类型是乱码。
没办法只能用 MySQLDriverCS-n-EasyQueryTools-4.0.0-DotNet2.0
中文参考手册http://www.yesky.com/imagesnew/software/mysql/manual_Reference.html
安装用了后发现问题,不支持Uint,当数据库中值在4294967295/2~4294967295就会报错。
项目不是很急,查源码。
发现CPrototypes.cs里MysqltoNetType
else if (type == (uint)enum_field_types_5.FIELD_TYPE_INT24 ||
type == (uint)enum_field_types_5.FIELD_TYPE_LONG)
{
return System.Type.GetType("System.Int32");
}
统一返回的Int32,需要添加一个分支
发现没得标识说明,查资料后发现Flags可以用,于是修改C#源码的类结构
/// <summary>
/// Interface extended by different MySQL_FIELD versions.
/// </summary>
public interface IMYSQL_FIELD
{
/// <summary>
/// Div flagsdefine('NOT_NULL_FLAG', 1);
/// define('PRI_KEY_FLAG', 2);
/// define('UNIQUE_KEY_FLAG', 4);
/// define('MULTIPLE_KEY_FLAG', 8);
/// define('BLOB_FLAG', 16);
/// define('UNSIGNED_FLAG', 32);
/// define('ZEROFILL_FLAG', 64);
/// define('BINARY_FLAG', 128);
/// define('ENUM_FLAG', 256);
/// define('AUTO_INCREMENT_FLAG', 512);
/// define('TIMESTAMP_FLAG', 1024);
/// define('SET_FLAG', 2048);
/// define('NUM_FLAG', 32768);
/// define('PART_KEY_FLAG', 16384);
/// define('UNIQUE_FLAG', 65536);
/// </summary>
uint Flags{get;}
/// <summary>
/// Name of column
/// </summary>
string Name{get;}
/// <summary>
/// Type of field
/// </summary>
uint Type{get;set;}
/// <summary>
/// Max width for selected set
/// </summary>
long Max_Length {get;set;}
/// <summary>
/// Width of column (create length)
/// </summary>
uint Length{get;}
}
实现了功能,麻烦二:一,非托管到托管的处理,不清楚内存结构。二,C写的结构不清楚查了很才查得Enmu值。
一共修改的两上上传记录一下,
最后又发现一个问题,MySQL中的VARBINARY被转换在string,处理有问题。还没发现解决方法
2011年3月1日
没办法只能用 MySQLDriverCS-n-EasyQueryTools-4.0.0-DotNet2.0
中文参考手册http://www.yesky.com/imagesnew/software/mysql/manual_Reference.html
安装用了后发现问题,不支持Uint,当数据库中值在4294967295/2~4294967295就会报错。
项目不是很急,查源码。
发现CPrototypes.cs里MysqltoNetType
else if (type == (uint)enum_field_types_5.FIELD_TYPE_INT24 ||
type == (uint)enum_field_types_5.FIELD_TYPE_LONG)
{
return System.Type.GetType("System.Int32");
}
统一返回的Int32,需要添加一个分支
发现没得标识说明,查资料后发现Flags可以用,于是修改C#源码的类结构
/// <summary>
/// Interface extended by different MySQL_FIELD versions.
/// </summary>
public interface IMYSQL_FIELD
{
/// <summary>
/// Div flagsdefine('NOT_NULL_FLAG', 1);
/// define('PRI_KEY_FLAG', 2);
/// define('UNIQUE_KEY_FLAG', 4);
/// define('MULTIPLE_KEY_FLAG', 8);
/// define('BLOB_FLAG', 16);
/// define('UNSIGNED_FLAG', 32);
/// define('ZEROFILL_FLAG', 64);
/// define('BINARY_FLAG', 128);
/// define('ENUM_FLAG', 256);
/// define('AUTO_INCREMENT_FLAG', 512);
/// define('TIMESTAMP_FLAG', 1024);
/// define('SET_FLAG', 2048);
/// define('NUM_FLAG', 32768);
/// define('PART_KEY_FLAG', 16384);
/// define('UNIQUE_FLAG', 65536);
/// </summary>
uint Flags{get;}
/// <summary>
/// Name of column
/// </summary>
string Name{get;}
/// <summary>
/// Type of field
/// </summary>
uint Type{get;set;}
/// <summary>
/// Max width for selected set
/// </summary>
long Max_Length {get;set;}
/// <summary>
/// Width of column (create length)
/// </summary>
uint Length{get;}
}
实现了功能,麻烦二:一,非托管到托管的处理,不清楚内存结构。二,C写的结构不清楚查了很才查得Enmu值。
一共修改的两上上传记录一下,
最后又发现一个问题,MySQL中的VARBINARY被转换在string,处理有问题。还没发现解决方法
2011年3月1日
相关文章推荐
- .NET 4.0 环境下无法直接运行 .NET 2.0 程序的问题,当然目前解决了 (转载--来于园中)
- MySQLDriverCS 中文乱码 问题解决
- 应用程序从.net 2.0 升级到.net 4.0 后遇到的问题及解决办法
- ECShop网店系统 V2.7.3 本地安装提示MYSQL JPEG PNG 不支持问题解决方案
- 利用MySQLDriverCS实现在.NET环境下访问MySQL数据库
- C# 未能加载文件或程序集“MySQLDriverCS..." 错误解决
- 解决MYSQL UTF编码文件无法恢复数据的问题:让Mysql支持Emoji表情
- 【问题解决】QSqlDatabase: QMYSQL driver not loaded
- Mysql-5.5.3 主从同步不支持master-host问题的解决办法
- PowerDesigner导入MySql步骤和解决问题Non SQL Error : Could not load class com.mysql.jdbc.Driver
- 安装pdo_mysql 问题[解决阿里云使用wdlinux不支持pdo问题]
- sqoop组件运行出错问题解决--com.mysql.jdbc.Driver
- [置顶] 让turboGears支持MySQL -- 解决MySQL-python-1.2.2的安装问题
- 终于解决了 .NET 2.0 的URL解码问题
- 从 .net 1.1 升级到 2.0过程中遇到的问题及解决方法
- C#(64位系统) 解决MySQLDriverCS"未能加载文件或程序集,或它的某一个依赖项"
- mysql replication driver 在jdk1.6下失效问题解决
- IIS+php 不支持mysql的一个问题以及解决
- .NET 操作 MySql 时,出现Duplicate entry '0' for key 'PRIMARY'问题解决办法
- 利用MySQLDriverCS实现在.NET环境下访问MySQL数据库