C#与DBType映射关系详解

2星 需积分: 17 38 下载量 108 浏览量 更新于2024-09-13 收藏 383B TXT 举报
"了解DBType与C#类型之间的对应关系对于在.NET开发中处理数据库操作至关重要。DBType是ADO.NET中的枚举类型,用于定义数据库字段的数据类型,而C#是编程语言,它有自己的数据类型系统。这篇内容将详细阐述DBType与C#类型的对应关系,帮助开发者更好地进行参数绑定和数据操作。" 在.NET框架中,当你需要与数据库交互时,如执行SQL命令或存储过程,通常需要将C#对象转换为DBType,以便适配数据库的预期数据类型。以下是一些主要的DBType及其对应的C#类型: 1. AnsiString: 这对应于C#的`VarChar`类型,用于存储可变长度的非Unicode字符串。 2. Binary: 对应于C#的`VarBinary`,用于存储可变长度的二进制数据。 3. Byte: 对应C#的`TinyInt`,这是一个无符号的1字节整数类型。 4. Boolean: 对应C#的`Bit`,用于存储布尔值,即True或False。 5. Currency: 对应C#的`Money`,用于表示货币值。 6. Date: 在C#中,没有直接对应的Date类型,但通常使用`DateTime`来处理日期和时间。 7. DateTime: 对应C#的`DateTime`,用于存储日期和时间信息。 8. Decimal: 对应C#的`Decimal`,提供高精度的十进制数值。 9. Double: 对应C#的`Float`,用于存储双精度浮点数。 10. Guid: 对应C#的`UniqueIdentifier`,用于存储全局唯一标识符。 11. Int16: 对应C#的`SmallInt`,是16位有符号整数。 12. Int32: 对应C#的`Int`,是32位有符号整数。 13. Int64: 对应C#的`BigInt`,是64位有符号整数。 14. Object: 对应C#的`Variant`,可以是任何类型,但在C#中通常使用`object`类型代替。 15. Single: 对应C#的`Real`,用于存储单精度浮点数。 16. String: 对应C#的`NVarChar`,用于存储可变长度的Unicode字符串。 17. Time: 虽然在DBType中有Time,但在C#中,时间信息通常也用`DateTime`处理。 18. AnsiStringFixedLength: 对应C#的`Char`,用于存储固定长度的非Unicode字符串。 19. StringFixedLength: 对应C#的`NChar`,用于存储固定长度的Unicode字符串。 20. Xml: 对应C#的`Xml`,用于存储XML文档。 21. DateTime2: 对应C#的`DateTime2`,提供了比`DateTime`更高的精度。 22. DateTimeOffset: 对应C#的`DateTimeOffset`,包含了日期、时间和时区信息。 理解这些对应关系有助于确保在数据库操作中数据类型的一致性,避免因类型不匹配导致的错误。在进行参数绑定时,正确地将C#对象转换为对应的DBType,可以使数据库操作更加顺利高效。例如,在使用`SqlCommand`的`AddInParameter`方法时,就需要指定正确的DBType。此外,了解这些对应关系还有助于优化存储空间的使用和提高查询性能。
2015-01-26 上传
前面做项目,有数据库操作太慢。 而且,有一些新的程序员,他们对数据库操作的经验比较欠缺, 而且,.net需要学的东西就非常多,涵盖很多,还要程序员精通数据库,就更加麻烦,没有好多年的经验, 操作数据库的,一检查就有很多问题。所以,根据需要,我就找到了这个 简单的,高效,快速,方便的 .net数据库操作方案。非常直观。不需要懂数据库都能开发了。 找了好久,总算找到了,分享给大家。 ---------------------------- ------------------------------ SqLamdalf1.0 ----------================-----------================--------- .net与数据库最佳操作类。 无缝衔接sql server和.net。 不需要为操作数据库再话费大量的开发时间,节约开发成本,以及更高效,更快速,更方便。 以后将陆续支持更多的数据库。 ----------================-----------================--------- SqLamdalf1.0免费版,欢迎使用。 使用方法: 双击setup.exe 安装以后。 桌面会出现 SqLamdalf 然后直接添加到需要的程序引用中,就可以使用了。 ============================================================== 调用方法: using SqlLamdalf; //工厂方法建立连接字符串 SqlLamdalf.FactoryAnna factorySql = new SqlLamdalf.FactoryAnna(AnnaType.SqlServer, "Persist Security Info=False;Integrated Security=SSPI;Database=数据库名称;Server=sql服务器名称"); //对需要的表的对象建立对象Sql。下面例子中为两个表,目前已经支持9个表: var Sql = factorySql.Create(); //目前支持返回 1实体类Sql.ExecuteEntity,2实体类列表,3表格,4字符串,5int var sdfsf123 = Sql.ExecuteList((a, b) => Sub.Top(8).Select(a.UserId, a.UserName).From(a) ); //目前支持返回 1实体类Sql.ExecuteEntity,2实体类列表,3表格,4字符串,5int var sdfsf123 = Sql.ExecuteList((a, b) => Sub.Top(8).Select(a.UserId, a.UserName).From(a) ); //分页查询如下,注意OrderBy免费版请取消 DataTable dtUser = Sql.ExecuteDataTable((a, b) => Sub.PageSize(12).PageIndex(2).Select(a.UserId.As("ID号"), a.UserName.As("名字")).From(a).OrderBy(a.CreateDate.Desc()) ); //如需执行多条语句,请在语句后面加上Next() var sdfsf1113 = Sql.ExecuteList((a, b) => Sub.Insert(a).Values("213", "111", 11, "2012-02-02"). Next(). Select("213", "111", 11, "2012-02-02").From(a).Where(a.UserId == 123123) ); //下面是联结方式的多表查询,支持各种联结查询,&&意味and,LikeLeft意为Like '%name',LikeRight var sdfsf21 = Sql.ExecuteNonQuery((a, b) => Sub.Update(a).Set(a.RoleId == u1.RoleId, a.LoginPassword == irod.ToString(), a.UserName == "2").From(a). InnerJoin(b).On(a.UserId == b.CategoryId) .Where(a.UserId == 1 && (a.UserName + "123").LikeLeft(u1.UserName)) );