有没有办法将SQL数据类型加载到下拉菜单中而无需编写我自己的方法



我想创建一个类似于SQL Management Studio的导入/导出向导中的数据映射部分中的SQL数据类型的下拉列表。

有人知道如何在不编写自定义代码的情况下执行此操作吗?system.data.sql中会有一个方法调用吗?

仅出于后代,这并不难 - 在linqpad中运行它,引用System.Data

void Main()
{
     Console.WriteLine(GetSqlTypes());
}
Dictionary<string,Type> GetSqlTypes()
{
   var types=new Dictionary<string,Type>();
   var a = Assembly.Load("System.Data");
     foreach (var sqlType in a.GetTypes().Where(t=>t.Namespace=="System.Data.SqlTypes" 
                    && t.Name.StartsWith("Sql")
                     && !t.Name.Contains("Exception")
                     && !t.Name.Contains("Schema")
                     && !t.Name.Contains("Stream")))
         {
            types.Add(sqlType.Name,sqlType);
         }
         return types;
}

因此,您只需将下拉列表绑定到getsqltypes:

    ddlTypes.DataSource = GetSqlTypes();
    ddlTypes.DataTextField = "Value";
    ddlTypes.DataValueField = "Key";
    ddlTypes.DataBind();

当然,这是一个纯粹的蛮力骇客,毫无疑问,别人有一种更优雅的方法,但这至少会让您启动并运行。

system.enum.getValues(typeof(system.data.sqldbtype));

没有内置的方法可以做到这一点。

最新更新