惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
博客园 - 【当耐特】
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Recent Announcements
Recent Announcements
D
Docker
GbyAI
GbyAI
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
The Cloudflare Blog
雷峰网
雷峰网
A
About on SuperTechFans
小众软件
小众软件
博客园 - Franky
博客园 - 聂微东
F
Full Disclosure
大猫的无限游戏
大猫的无限游戏
C
Check Point Blog
MongoDB | Blog
MongoDB | Blog
G
Google Developers Blog
Microsoft Azure Blog
Microsoft Azure Blog
U
Unit 42
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
V2EX
Engineering at Meta
Engineering at Meta
宝玉的分享
宝玉的分享
aimingoo的专栏
aimingoo的专栏
量子位
P
Proofpoint News Feed
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
罗磊的独立博客
Martin Fowler
Martin Fowler
D
DataBreaches.Net
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
S
Secure Thoughts
Project Zero
Project Zero
L
LangChain Blog
阮一峰的网络日志
阮一峰的网络日志
C
Cybersecurity and Infrastructure Security Agency CISA
T
Tailwind CSS Blog
S
Schneier on Security
Blog — PlanetScale
Blog — PlanetScale
The Hacker News
The Hacker News
Spread Privacy
Spread Privacy
Security Latest
Security Latest
NISL@THU
NISL@THU
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
C
CXSECURITY Database RSS Feed - CXSecurity.com
J
Java Code Geeks

博客园 - 水如烟(LzmTW)

.NET的变量在代码集中是不安全的 HOW TO:获取硬盘物理序列号(VB.NET) 一个创建快捷方式类 一个简单的CodeAccessPermission生成器 认识一下Attribute HOW TO:端口打印(比较粗糙) 标记法定义和创建数据库(四) 标记法定义和创建数据库 HOW TO:重启程序(WinForm) HOW TO:设置默认打印机 HOW TO:避免“将COM对象与其基础RCW分开后不能再使用该对象”错误 HOW TO:控制是否允许用户退出ExcelApplication的Workbook 树和自联表(五) 树和自联表(六) 树和自联表(四) 树和自联表(一) 行政区划数据数据库的设计(脚本) 行政区划数据数据库的设计(七) 行政区划数据数据库的设计(六)
Sql2005数据类型与Framework类型的对应关系
水如烟(LzmTW) · 2007-01-21 · via 博客园 - 水如烟(LzmTW)

Author:水如烟  

通过以下语句获取SqlServer2005的系统数据类型:

SELECT
    
identity(int0,1[Column],
    type_name(system_type_id) DataType
INTO #tmp01
FROM  sys.types
WHERE user_type_id < 256 
ORDER BY name
;
SELECT
    
char(65+[column][column],
    DataType
FROM #tmp01
;
DROP TABLE #tmp01

 用此语句加载数据到一个DataTable,据此生成一个创建含有全部系统类型的语句:

CREATE TABLE [dbo].[#tmp02]
(
    
[A]    bigint,
    
[B]    binary,
    
[C]    bit,
    
[D]    char,
    
[E]    datetime,
    
[F]    decimal,
    
[G]    float,
    
[H]    image,
    
[I]    int,
    
[J]    money,
    
[K]    nchar,
    
[L]    ntext,
    
[M]    numeric,
    
[N]    nvarchar,
    
[O]    real,
    
[P]    smalldatetime,
    
[Q]    smallint,
    
[R]    smallmoney,
    
[S]    sql_variant,
    
[T]    text,
    
[U]    timestamp,
    
[V]    tinyint,
    
[W]    uniqueidentifier,
    
[X]    varbinary,
    
[Y]    varchar,
    
[Z]    xml
)
;
SELECT * 
FROM #tmp02
;
DROP TABLE #tmp02

再把它加载到一个DataTable,分析DataColumn的数据类型,并与现有SqlDbType枚举比较,结果如下:

Sql9DbType.bigint           ,SqlDbType.BigInt            ,System.Int64

Sql9DbType.binary           ,SqlDbType.Binary            ,System.Byte[]

Sql9DbType.bit              ,SqlDbType.Bit               ,System.Boolean

Sql9DbType.char             ,SqlDbType.Char              ,System.String

Sql9DbType.datetime         ,SqlDbType.DateTime          ,System.DateTime

Sql9DbType.decimal          ,SqlDbType.Decimal           ,System.Decimal

Sql9DbType.float            ,SqlDbType.Float             ,System.Double

Sql9DbType.image            ,SqlDbType.Image             ,System.Byte[]

Sql9DbType.int              ,SqlDbType.Int               ,System.Int32

Sql9DbType.money            ,SqlDbType.Money             ,System.Decimal

Sql9DbType.nchar            ,SqlDbType.NChar             ,System.String

Sql9DbType.ntext            ,SqlDbType.NText             ,System.String

Sql9DbType.numeric          ,                            ,System.Decimal

Sql9DbType.nvarchar         ,SqlDbType.NVarChar          ,System.String

Sql9DbType.real             ,SqlDbType.Real              ,System.Single

Sql9DbType.smalldatetime    ,SqlDbType.SmallDateTime     ,System.DateTime

Sql9DbType.smallint         ,SqlDbType.SmallInt          ,System.Int16

Sql9DbType.smallmoney       ,SqlDbType.SmallMoney        ,System.Decimal

Sql9DbType.sql_variant      ,                            ,System.Object

Sql9DbType.text             ,SqlDbType.Text              ,System.String

Sql9DbType.timestamp        ,SqlDbType.Timestamp         ,System.Byte[]

Sql9DbType.tinyint          ,SqlDbType.TinyInt           ,System.Byte

Sql9DbType.uniqueidentifier ,SqlDbType.UniqueIdentifier  ,System.Guid

Sql9DbType.varbinary        ,SqlDbType.VarBinary         ,System.Byte[]

Sql9DbType.varchar          ,SqlDbType.VarChar           ,System.String

Sql9DbType.xml              ,SqlDbType.Xml               ,System.String

                            ,Variant                     ,

                            ,Udt                         ,

对比后可以做成以下类:

Namespace LzmTW.uSystem.uData
    
Public Enum Sql9DbType
        bigint
        binary
        bit
        [
char]
        datetime
        [
decimal]
        float
        image
        
int
        money
        nchar
        ntext
        numeric
        nvarchar
        real
        smalldatetime
        smallint
        smallmoney
        sql_variant
        text
        timestamp
        tinyint
        uniqueidentifier
        varbinary
        varchar
        xml
        
''' <summary>
        ''' 仅作参考,实际无此类型
        ''' </summary>
        Udt
    
End Enum
End Namespace

Namespace LzmTW.uSystem.uData
    
Public Class Convert
        
Private Sub New()
        
End SubPublic Shared Function ToSqlDbType(ByVal type As Sql9DbType) As SqlDbType
            
Select Case type
                
Case Sql9DbType.bigint
                    
Return SqlDbType.BigIntCase Sql9DbType.binary
                    
Return SqlDbType.BinaryCase Sql9DbType.bit
                    
Return SqlDbType.BitCase Sql9DbType.char
                    
Return SqlDbType.CharCase Sql9DbType.datetime
                    
Return SqlDbType.DateTimeCase Sql9DbType.decimal
                    
Return SqlDbType.DecimalCase Sql9DbType.float
                    
Return SqlDbType.FloatCase Sql9DbType.image
                    
Return SqlDbType.ImageCase Sql9DbType.int
                    
Return SqlDbType.IntCase Sql9DbType.money
                    
Return SqlDbType.MoneyCase Sql9DbType.nchar
                    
Return SqlDbType.NCharCase Sql9DbType.ntext
                    
Return SqlDbType.NTextCase Sql9DbType.numeric
                    
Return SqlDbType.DecimalCase Sql9DbType.nvarchar
                    
Return SqlDbType.NVarCharCase Sql9DbType.real
                    
Return SqlDbType.RealCase Sql9DbType.smalldatetime
                    
Return SqlDbType.SmallDateTimeCase Sql9DbType.smallint
                    
Return SqlDbType.SmallIntCase Sql9DbType.smallmoney
                    
Return SqlDbType.SmallMoneyCase Sql9DbType.sql_variant
                    
Return SqlDbType.VarBinaryCase Sql9DbType.text
                    
Return SqlDbType.TextCase Sql9DbType.timestamp
                    
Return SqlDbType.TimestampCase Sql9DbType.tinyint
                    
Return SqlDbType.TinyIntCase Sql9DbType.uniqueidentifier
                    
Return SqlDbType.UniqueIdentifierCase Sql9DbType.varbinary
                    
Return SqlDbType.VarBinaryCase Sql9DbType.varchar
                    
Return SqlDbType.VarCharCase Sql9DbType.xml
                    
Return SqlDbType.XmlCase Sql9DbType.Udt
                    
Return SqlDbType.Udt
            
End Select
        
End FunctionPublic Shared Function ToSql9DbType(ByVal type As SqlDbType) As Sql9DbType
            
Select Case type
                
Case SqlDbType.BigInt
                    
Return Sql9DbType.bigintCase SqlDbType.Binary
                    
Return Sql9DbType.binaryCase SqlDbType.Bit
                    
Return Sql9DbType.bitCase SqlDbType.Char
                    
Return Sql9DbType.charCase SqlDbType.DateTime
                    
Return Sql9DbType.datetimeCase SqlDbType.Decimal
                    
Return Sql9DbType.decimal'Case SqlDbType.Decimal
                    'Return Sql9DbType.numeric

                
Case SqlDbType.Float
                    
Return Sql9DbType.floatCase SqlDbType.Image
                    
Return Sql9DbType.imageCase SqlDbType.Int
                    
Return Sql9DbType.intCase SqlDbType.Money
                    
Return Sql9DbType.moneyCase SqlDbType.NChar
                    
Return Sql9DbType.ncharCase SqlDbType.NText
                    
Return Sql9DbType.ntextCase SqlDbType.NVarChar
                    
Return Sql9DbType.nvarcharCase SqlDbType.Real
                    
Return Sql9DbType.realCase SqlDbType.SmallDateTime
                    
Return Sql9DbType.smalldatetimeCase SqlDbType.SmallInt
                    
Return Sql9DbType.smallintCase SqlDbType.SmallMoney
                    
Return Sql9DbType.smallmoneyCase SqlDbType.Variant
                    
Return Sql9DbType.sql_variantCase SqlDbType.Text
                    
Return Sql9DbType.textCase SqlDbType.Timestamp
                    
Return Sql9DbType.timestampCase SqlDbType.TinyInt
                    
Return Sql9DbType.tinyintCase SqlDbType.UniqueIdentifier
                    
Return Sql9DbType.uniqueidentifierCase SqlDbType.VarBinary
                    
Return Sql9DbType.varbinaryCase SqlDbType.VarChar
                    
Return Sql9DbType.varcharCase SqlDbType.Xml
                    
Return Sql9DbType.xmlCase SqlDbType.Udt
                    
Return Sql9DbType.UdtEnd Select
        
End FunctionPublic Shared Function ToClassType(ByVal type As Sql9DbType) As Type
            
Select Case type
                
Case Sql9DbType.bigint
                    
Return GetType(System.Int64)Case Sql9DbType.binary
                    
Return GetType(System.Byte())Case Sql9DbType.bit
                    
Return GetType(System.Boolean)Case Sql9DbType.char
                    
Return GetType(System.String)Case Sql9DbType.datetime
                    
Return GetType(System.DateTime)Case Sql9DbType.decimal
                    
Return GetType(System.Decimal)Case Sql9DbType.float
                    
Return GetType(System.Double)Case Sql9DbType.image
                    
Return GetType(System.Byte())Case Sql9DbType.int
                    
Return GetType(System.Int32)Case Sql9DbType.money
                    
Return GetType(System.Decimal)Case Sql9DbType.nchar
                    
Return GetType(System.String)Case Sql9DbType.ntext
                    
Return GetType(System.String)Case Sql9DbType.numeric
                    
Return GetType(System.Decimal)Case Sql9DbType.nvarchar
                    
Return GetType(System.String)Case Sql9DbType.real
                    
Return GetType(System.Single)Case Sql9DbType.smalldatetime
                    
Return GetType(System.DateTime)Case Sql9DbType.smallint
                    
Return GetType(System.Int16)Case Sql9DbType.smallmoney
                    
Return GetType(System.Decimal)Case Sql9DbType.sql_variant
                    
Return GetType(System.Object)Case Sql9DbType.text
                    
Return GetType(System.String)Case Sql9DbType.timestamp
                    
Return GetType(System.Byte())Case Sql9DbType.tinyint
                    
Return GetType(System.Byte)Case Sql9DbType.uniqueidentifier
                    
Return GetType(System.Guid)Case Sql9DbType.varbinary
                    
Return GetType(System.Byte())Case Sql9DbType.varchar
                    
Return GetType(System.String)Case Sql9DbType.xml
                    
Return GetType(System.String)Case Sql9DbType.Udt
                    
Return GetType(System.Object)Case Else
                    
Return GetType(System.Object)
            
End Select
        
End FunctionPublic Shared Function ToClassType(ByVal type As SqlDbType) As Type
            
Select Case type
                
Case SqlDbType.BigInt
                    
Return GetType(System.Int64)Case SqlDbType.Binary
                    
Return GetType(System.Byte())Case SqlDbType.Bit
                    
Return GetType(System.Boolean)Case SqlDbType.Char
                    
Return GetType(System.String)Case SqlDbType.DateTime
                    
Return GetType(System.DateTime)Case SqlDbType.Decimal
                    
Return GetType(System.Decimal)Case SqlDbType.Float
                    
Return GetType(System.Double)Case SqlDbType.Image
                    
Return GetType(System.Byte())Case SqlDbType.Int
                    
Return GetType(System.Int32)Case SqlDbType.Money
                    
Return GetType(System.Decimal)Case SqlDbType.NChar
                    
Return GetType(System.String)Case SqlDbType.NText
                    
Return GetType(System.String)Case SqlDbType.NVarChar
                    
Return GetType(System.String)Case SqlDbType.Real
                    
Return GetType(System.Single)Case SqlDbType.SmallDateTime
                    
Return GetType(System.DateTime)Case SqlDbType.SmallInt
                    
Return GetType(System.Int16)Case SqlDbType.SmallMoney
                    
Return GetType(System.Decimal)Case SqlDbType.Variant
                    
Return GetType(System.Object)Case SqlDbType.Text
                    
Return GetType(System.String)Case SqlDbType.Timestamp
                    
Return GetType(System.Byte())Case SqlDbType.TinyInt
                    
Return GetType(System.Byte)Case SqlDbType.UniqueIdentifier
                    
Return GetType(System.Guid)Case SqlDbType.VarBinary
                    
Return GetType(System.Byte())Case SqlDbType.VarChar
                    
Return GetType(System.String)Case SqlDbType.Xml
                    
Return GetType(System.String)Case SqlDbType.Udt
                    
Return GetType(System.Object)Case Else
                    
Return GetType(System.Object)
            
End Select
        
End Function
    
End Class
End Namespace