【淘宝ERP-资料收集】C# 类型 对应 SQLserver类型

 

C#操作SQL float类型数据,在C#中用double类型就OK了,C#数据类型和SQL数据类型对照

C#操作SQL Float类型,数据会多很多小数,原来是C#的float和sql的float类型不一致

 

/// <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;
        }

 

SQL Server类型C#类型
bitbool
tinyintbyte
smallintshort
intint
bigintlong
realfloat
floatdouble
moneydecimal
datetimeDateTime
charstring
varcharstring
ncharstring
nvarcharstring
textstring
ntextstring
imagebyte[]
binarybyte[]
uniqueidentifierGuid

 

数据库中字段类型对应C#中的数据类型:

 SQL SERVER类型 C#类型
精确数字bigint从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。Int64
int从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节。int 的 SQL-92 同义字为integerInt32
smallint

从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型数据。存储大小为 2 个字节。

Int16
tinyint

从 0 到 255 的整型数据。存储大小为 1 字节。

System.Byte
bit

1 或 0 的整数数据。

Boolean
decimal从 -10^38 +1 到 10^38 –1 的固定精度和小数位的数字数据。System.Decimal
numeric功能上等同于 decimalSystem.Decimal
money

货币数据值介于 -2^63 (-922,337,203,685,477.5808) 与 2^63 - 1 (+922,337,203,685,477.5807) 之间,精确到货币单位的千分之十。

System.Decimal
smallmoney

货币数据值介于 -214,748.3648 与 +214,748.3647 之间,精确到货币单位的千分之十。

System.Decimal
近似数字float

从 -1.79E + 308 到 1.79E + 308 的浮点精度数字。

System.Double
real

从 -3.40E + 38 到 3.40E + 38 的浮点精度数字。

System.Single
 datetime从 1753 年 1 月 1 日到 9999 年 12 月 31 日的日期和时间数据,精确到百分之三秒(或 3.33 毫秒)。System.DateTime
smalldatetime

从 1900 年 1 月 1 日到 2079 年 6 月 6 日的日期和时间数据,精确到分钟。

System.DateTime
字符串char

固定长度的非 Unicode 字符数据,最大长度为 8,000 个字符。

String
varchar

可变长度的非 Unicode 数据,最长为 8,000 个字符。

String
text

可变长度的非 Unicode 数据,最大长度为 2^31 - 1 (2,147,483,647) 个字符。

String
Unicode 字符串nchar

固定长度的 Unicode 数据,最大长度为 4,000 个字符。

String
nvarchar

可变长度 Unicode 数据,其最大长度为 4,000 字符。sysname 是系统提供用户定义的数据类型,在功能上等同于nvarchar(128),用于引用数据库对象名。

String
ntext

可变长度 Unicode 数据,其最大长度为 2^30 - 1 (1,073,741,823) 个字符。

String
二进制字符串binary固定长度的二进制数据,其最大长度为 8,000 个字节。System.Byte[]
varbinary可变长度的二进制数据,其最大长度为 8,000 个字节。System.Byte[]
image

可变长度的二进制数据,其最大长度为 2^31 - 1 (2,147,483,647) 个字节。

System.Byte[]
其它数据类型timestamp

数据库范围的唯一数字,每次更新行时也进行更新。

System.DateTime
uniqueidentifier

全局唯一标识符 (GUID)。

System.Guid
Variant Object

 1.合并DataTable

遇到的问题:

需要选择两个不同数据库的不同表中的记录重新组合成一个新的集合。

解决方法:

将两个DataTable合并成为一个DataTable

取得两个DataTable某些列,按照某种选择条件重新组合成为一个新的DataTable

这个很类似于”select  *  from 表1,表2  where 表1.列名= 表2.列名”

示例代码

        /// <summary>合并dt1和dt2的数据</summary>
        /// <returns>获得合并之后的新DataTable---newTable</returns>
        private static DataTable CombineTable(DataTable dt1, DataTable dt2)
        {
            //创建新的DataTable
            DataTable newTable = new DataTable();
            //为newTable添加新列
            newTable.Columns.Add("StudentID", Type.GetType("System.String"), " ");
            newTable.Columns.Add("StudentCode", Type.GetType("System.String"), " ");
            newTable.Columns.Add("StudentName", Type.GetType("System.String"), " ");
            newTable.Columns.Add("Indexing", Type.GetType("System.Int64"), " ");
            newTable.Columns.Add("ClassID", Type.GetType("System.String"), " ");
            newTable.Columns.Add("ClassCode", Type.GetType("System.String"), " ");
            newTable.Columns.Add("ClassName", Type.GetType("System.String"), " ");

            newTable.Merge(dt1); //将dt1合并到newTable

            foreach (DataRow newrow in newTable.Rows) //遍历newTable全部列
            {
                foreach (DataRow dr2 in dt2.Rows) //遍历dt2全部列
                {
                    if (newrow["StudentID"].ToString() == dr2["StudentID"].ToString()) //当newTable的StudentID和dt2的StudentID相同时,执行下列操作
                    {
                        //将dtStudentExecutiveClassLink对应列的信息newTable对应列中
                        newrow["StudentCode"] = dr2["StudentCode"];
                        newrow["StudentName"] = dr2["StudentName"];
                        newrow["ClassID"] = dr2["ClassID"];
                        newrow["ClassCode"] = dr2["ClassCode"];
                        newrow["EClassName"] = dr2["ClassName"];
                    }
                }
            }
            return newTable; //返回结果
        }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值