我们在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;