有没有办法能知道DataTable里的字段属于数据库中的什么数据类型? 就是找出是SqlDbType的值.大概是想这样做:
========================================================
DataTable dt = ...;if (dt[0]["d"]是SqlDbType.DateTime)
{
....
}
else
if (dt[0]["d"]是....
{
}
=========================================================

解决方案 »

  1.   

    用Columns[0].DataType得到第一列的数据类型。不过这里得到的是.Net中的类型。
    应该也能满足你的要求了吧。
      

  2.   

    参看这个
    http://singlepine.cnblogs.com/articles/255374.html
    private static System.Data.DbType GetDbType(Type type)
    {
                DbType result = DbType.String;
                if( type.Equals(typeof(int)) ||  type.IsEnum)
                    result = DbType.Int32;
                else if( type.Equals(typeof(long)))
                    result = DbType.Int32;
                else if( type.Equals(typeof(double)) || type.Equals( typeof(Double)))
                    result = DbType.Decimal;
                else if( type.Equals(typeof(DateTime)))
                    result = DbType.DateTime;
                else if( type.Equals(typeof(bool)))
                    result = DbType.Boolean;
                else if( type.Equals(typeof(string) ) )
                    result = DbType.String;
                else if( type.Equals(typeof(decimal)))
                    result = DbType.Decimal;
                else if( type.Equals(typeof(byte[])))
                    result = DbType.Binary;
                else if( type.Equals(typeof(Guid)))
                    result = DbType.Guid;        
                return result;
    }DataTable dt=new DataTable();
    System.Data.IDataParameter iparam=new  SqlParameter();
    iparam.ParameterName    = "@"+ dt.Columns[0].ColumnName;
    iparam.DbType            = GetDbType(dt.Columns[0].DataType);
    iparam.Value            = dt.Rows[0][k];
    sqlcom.Parameters .Add(iparam);
      

  3.   

    ding 果然可以 ,我改了一下可以用在SQL Server 上 ,就是最后一个 GUID 不知道是什么,我随便搞了个int 型
    public static System.Data.SqlDbType GetDbType(Type type)
    {
    System.Data.SqlDbType result = new System.Data.SqlDbType();
    if( type.Equals(typeof(int)) ||  type.IsEnum)
    result = System.Data.SqlDbType.Int;
    else if( type.Equals(typeof(long)))
    result =  System.Data.SqlDbType.Int;
    else if( type.Equals(typeof(double)) || type.Equals( typeof(Double)))
    result =  System.Data.SqlDbType.Decimal;
    else if( type.Equals(typeof(DateTime)))
    result =   System.Data.SqlDbType.DateTime;
    else if( type.Equals(typeof(bool)))
    result =  System.Data.SqlDbType.Bit;
    else if( type.Equals(typeof(string) ) )
    result =  System.Data.SqlDbType.Char;
    else if( type.Equals(typeof(decimal)))
    result =  System.Data.SqlDbType.Decimal;
    else if( type.Equals(typeof(byte[])))
    result =  System.Data.SqlDbType.Binary;
    else if( type.Equals(typeof(Guid)))
    result =  System.Data.SqlDbType.Int;      
    return result;
    }