我们在C#下使用Access,MS sql,Sqlite,Oracle数据库中 数据库数据类型
分别使用到 System.Data.OleDb.OleDbType ---(Access)
System.Data.SqlClient.SqlDbType ---(MS SQL)
SQlite数据库 使用的是 System.Data.SQLite.TypeAffinity ---(SQLite)
Oracle数据库 使用的是 System.Data.OracleClient.OracleType ---(Oracle)
这些命名空间下的属性和数据类型对应关系如下:
下表列出最常见数据类型 MicrosoftAccess 和关系 OleDbType 枚举为 Microsoft.NETFramework 数据类型与这些数据类型中使用。
访问类型名称 | 数据库数据类型 | OLEDB 类型 | .NET 框架类型 | 成员名称 |
文本 | VarWChar | DBTYPE _ WSTR | System.String | OleDbType.VarWChar |
备忘录 | LongVarWChar | DBTYPE _ WSTR | System.String | OleDbType.LongVarWChar |
字节数: | UnsignedTinyInt | DBTYPE _ UI 1 | System.Byte | OleDbType.UnsignedTinyInt |
是 / 否 | Boolean | DBTYPE_BOOL | System.Boolean | OleDbType.Boolean |
日期 / 时间 | DateTime | DBTYPE _ DATE | System.DateTime | OleDbType.date |
货币 | 十进制 | DBTYPE_NUMERIC | System.Decimal | OleDbType.numeric |
十进制数: | 十进制 | DBTYPE_NUMERIC | System.Decimal | OleDbType.numeric |
双数: | 双 | DBTYPE_R8 | System.Double | OleDbType.Double |
Autonumber (复制 ID) | GUID | DBTYPE_GUID | System.Guid | OleDbType.guid |
复制 (ID) 号: | GUID | DBTYPE_GUID | System.Guid | OleDbType.guid |
Autonumber (长整型) | 整数 | DBTYPE_I4 | System.Int 32 | OleDbType.integer |
数量: (长整型) | 整数 | DBTYPE_I4 | System.Int 32 | OleDbType.integer |
OLE 对象 | LongVarBinary | DBTYPE_BYTES | 数组 System.Byte | OleDbType.LongVarBinary |
单个数字: | 单个 | DBTYPE_R4 | System.Single | OleDbType.single |
整型数: | SmallInt | DBTYPE_I2 | System.Int 16 | OleDbType.SmallInt |
二进制 | VarBinary * | DBTYPE_BYTES | 数组 System.Byte | OleDbType.binary |
超链接 | VarWChar | DBTYPE _ WSTR | System.String | OleDbType.VarWChar |
其中MS SQL数据库 在 .NET 数据类型对应的名称:
case "System.Boolean": return System.Data.SqlClient.SqlDbType.Bit;
case "System.Single": return System.Data.SqlClient.SqlDbType.Real;
case "System.Double": return System.Data.SqlClient.SqlDbType.Float;
case "System.Int16": return System.Data.SqlClient.SqlDbType.Smallint;
case "System.Int32": return System.Data.SqlClient.SqlDbType.Int;
case "System.Int64": return System.Data.SqlClient.SqlDbType.Bigint;
case "System.DateTime": return System.Data.SqlClient.SqlDbType.Datetime;
case "System.Byte[]": return System.Data.SqlClient.SqlDbType.Image;
case "System.String": return System.Data.SqlClient.SqlDbType.Nvarchar;
- /// <summary>
- /// 数据库中与C#中的数据类型对照
- /// </summary>
- /// <param name="type"></param>
- /// <returns></returns>
- private string ChangeToCSharpType(string type)
- {
- string reval=string.Empty;
- switch(type.ToLower())
- {
- case "int":
- reval= "Int32";
- break;
- case "text":
- reval= "String";
- break;
- case "bigint":
- reval= "Int64";
- break;
- case "binary":
- reval= "System.Byte[]";
- break;
- case "bit":
- reval= "Boolean";
- break;
- case "char":
- reval= "String";
- break;
- case "datetime":
- reval= "System.DateTime";
- break;
- case "decimal":
- reval= "System.Decimal";
- break;
- case "float":
- reval= "System.Double";
- break;
- case "image":
- reval= "System.Byte[]";
- break;
- case "money":
- reval= "System.Decimal";
- break;
- case "nchar":
- reval= "String";
- break;
- case "ntext":
- reval= "String";
- break;
- case "numeric":
- reval= "System.Decimal";
- break;
- case "nvarchar":
- reval= "String";
- break;
- case "real":
- reval= "System.Single";
- break;
- case "smalldatetime":
- reval= "System.DateTime";
- break;
- case "smallint":
- reval= "Int16";
- break;
- case "smallmoney":
- reval= "System.Decimal";
- break;
- case "timestamp":
- reval= "System.DateTime";
- break;
- case "tinyint":
- reval= "System.Byte";
- break;
- case "uniqueidentifier":
- reval= "System.Guid";
- break;
- case "varbinary":
- reval= "System.Byte[]";
- break;
- case "varchar":
- reval= "String";
- break;
- case "Variant":
- reval="Object";
- break;
- default:
- reval= "String";
- break;
- }
- return reval;
- }
其中SQlite数据库 在 .NET 数据类型对应的名称:(注:SQlite目前不支持存储过程)
case "System.Boolean": return System.Data.SQLite.TypeAffinity.Int64;
case "System.Single": return System.Data.SQLite.TypeAffinity.Double;
case "System.Double": return System.Data.SQLite.TypeAffinity.Double;
case "System.Int16": return System.Data.SQLite.TypeAffinity.Int64;
case "System.Int32": return System.Data.SQLite.TypeAffinity.Int64;
case "System.Int64": return System.Data.SQLite.TypeAffinity.Int64;
case "System.DateTime": return System.Data.SQLite.TypeAffinity.DateTime;
case "System.Byte[]": return System.Data.SQLite.TypeAffinity.Blob;
case "System.String": return System.Data.SQLite.TypeAffinity.Text;