首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getschema("Columns") + return DataType;

getschema("Columns") + return DataType;
EN

Stack Overflow用户
提问于 2009-11-12 16:18:11
回答 1查看 9K关注 0票数 5

我有这个代码

代码语言:javascript
复制
using (SqlConnection conn = new SqlConnection(ConnectionString))
                    {
                        conn.Open();
                        DataTable Databases = conn.GetSchema("Databases");
                        DataTable Tables = conn.GetSchema("Tables");
                        DataTable Columns = conn.GetSchema("Columns");
                        conn.close();
                     }

我需要通过读取"DATA_TYPE“列中的字符串值来返回数据类型

代码语言:javascript
复制
 foreach (DataRow row in Columns.Rows)
                if (row["TABLE_NAME"].ToString() == tableName)
                {
                    if (fName == row["COLUMN_NAME"].ToString())
                    {
                      //return Datatype 
                      var x = row["DATA_TYPE"];
                    }
                }

/if(row“DATA_TYPE”== "int")如何通过DataType (Int)设置var x,或者如何通过行“DATA_TYPE”中的名称获取数据类型??!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-11-12 17:54:20

一种解决方案是创建一个将sql类型映射到.net类型的字典:

代码语言:javascript
复制
Dictionary<string, Type> sqlToNetTypes;

并使用您可以在"DATA_TYPE“列中找到的所有可能的类型以及它们的.NET等效项填充它:

代码语言:javascript
复制
sqlToNetTypes.Add("int", typeof(int));
sqlToNetTypes.Add("varchar", typeof(sting));
sqlToNetTypes.Add("datetime", typeof(DateTime));
sqlToNetTypes.Add("bit", typeof(bool));
sqlToNetTypes.Add("numeric", typeof(float));//or double or decimal as you like...
...

然后在helper方法中:

代码语言:javascript
复制
Type GetNETType(string sqlType)
{
    if(sqlToNetTypes.ContainsKey(sqlType))
    {
        return sqlToNetTypes[sqlType];
    }else
    {
        return typeof(object); //generic type
    }
}

并像这样使用它:

代码语言:javascript
复制
foreach (DataRow row in Columns.Rows)
    if (row["TABLE_NAME"].ToString() == tableName)
    {
        if (fName == row["COLUMN_NAME"].ToString())
        {
            //return Datatype 
            var x = GetNETType(row["DATA_TYPE"]);
        }
    }
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1720707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档