我需要将一些数据存储在数据表中。表中的列是: -ID -文本 -值 -数据类型 我应该如何定义表列,以便DataType列存储本机和复合类型?
目前我将其存储为
dt.Columns.Add(new DataColumn("Id", typeof(int)));
dt.Columns.Add(new DataColumn("Text", typeof(string)));
dt.Columns.Add(new DataColumn("Value", typeof(string)));
dt.Columns.Add(new DataColumn("DataType", typeof(string)));
稍后在我的程序中,我试图解析值并根据我显示控件的数据类型。比如,如果数据类型是int然后显示文本框,如果bool然后显示下拉列表。
我相信会有更简单的方法来做到这一点。请建议如何实现此功能?示例代码将帮助我更好地理解它。谢谢!
答案 0 :(得分:2)
在DataColumn
或DBMS中创建DataType和Value之类的列通常是Inner-platform effect的症状,您尝试通过忽略数据库中的类型定义来创建类型化数据库中的类型化数据库。
不要那样做。 DataColumn
已经支持类型化数据,查询架构以及连接包含异构数据的表。将整数存储为整数,将布尔运算为布尔值,并且您不必解析任何内容。您可以使用以下内容确定DataColumn
的数据类型:
var dc = new System.Data.DataColumn("ID", typeof(int));
bool isInt = dc.DataType.Equals(typeof(int));
答案 1 :(得分:0)
通过执行以下操作,您可以使代码更容易:
dt.Columns.Add("Id", typeof(int));
dt.Columns.Add("Text", typeof(string));
dt.Columns.Add("Value", typeof(string));
dt.Columns.Add("DataType", typeof(string));
无需使用datacolumn构造函数。
答案 2 :(得分:-1)
所以,你真的在创造某种创作工具。您可以在数据库中定义数据类型,然后在读取数据时动态创建控件?
好的,不是将默认值(true,false)存储在数据库中,而是将它们存储在控件中。例如,您现在的复选框必须具有默认值true / false,txtbax的默认值为空白等。
或者,yu可以扩展您的数据库以保存字段的可能值列表。我的意思是你可能有一行读取
Id = 5,Text ='Selected'。 Value ='False',Type ='System.Boolean'
然后在另一张表中
Id = 5,Value = True,默认= false Id = 5,Value = false,默认= true
或者,对于字符串
Id = 5,Text ='Selected'。 Value ='UK',Type ='System.Text'
Id = 5,Value ='UK',默认= true id = 5,value ='USA',默认= false
如果你这样做,那么你可以从第一个表中删除值..
不完全确定有帮助吗?