Tag: 强类型数据集

C#reflection:从类型化数据集中获取DataRow的字段

我目前正在构建一个方法,该方法从类型化的DataSet中获取DataRow类型的对象,然后返回DataRow中字段的JSON格式的字符串(用于Web服务)。 通过使用System.Reflection ,我正在做这样的事情: public string getJson(DataRow r) { Type controlType = r.GetType(); PropertyInfo[] props = controlType.GetProperties(); foreach (PropertyInfo controlProperty in props) { } return “”; } 然后在foreach语句中,我将迭代每个字段并获取字段名称和值,并将其格式化为JSON。 问题是当迭代props (类型为PropertyInfo[] )时,我得到的属性我不想被迭代: 替代文字http://img88.imageshack.us/img88/2001/datarowreflectionht0.gif 从上图中可以看出,我只需要props数组中0 – 11的字段,因为这些是这个特定类型行的“真实字段”。 所以我的问题是, 如何只获取Typed DataRow的字段,而不是其他’元数据’? [更新解决方案] 正如Mehrdad Afshari建议的那样,我使用的是Table.Columns数组,而不是使用Reflection 。 这是完成的function: public string GetJson(DataRow r) { int index = 0; StringBuilder json = new […]

即使AllowDBNull = False,数据集也允许Null值?

我使用VS2008数据集设计器设计了一个数据集。 在其中一个数据表中,我将大多数列的“AllowDBNull”属性设置为False。 但是,如果我为这些列创建包含空值的DataRow,则此数据表会接受此行,而不会出现任何错误。 我在这里不明白吗? 请指教。 谢谢。 然而, 编辑 Mike Spross的优秀解释会带来另一个问题。 如果它们是System.DBNull,我们如何检查文本字段? 令人惊讶的是,DataSets没有将字符串“”视为System.DBNull并抛出exception。 或者不是吗? 编辑我想我已经找到了问题和原因。 我正在初始化DataTable的新行,然后将值填入该行。 初始化行时,字符串的默认值,即“”可能正在该列中填充。 我想是的呢? 关于这个的任何想法?

使用.NET中的类型化数据集将SQL参数传递给IN()子句

首先道歉,因为这个网站上有类似的问题,但没有一个直接回答这个问题。 我在VS 2010中使用了类型化数据集。我在数据集中创建一个TableAdapter,其查询类似于: SELECT * from Table WHERE ID IN(@IDs) 现在,如果我调用: TableAdapter.Fill(MyDataTable,”1,2,3″) ,则会发生错误,指出VS无法将1,2,3转换为int类型。 很公平。 那么我决定在Parameter集合中将Parameter(即@IDs)类型更改为string。 再试一次 – 仍然是相同的错误消息。 那么这种类型的数据集是否可以接受我的“1,2,3”参数? 目前我只有一些参数可以通过,所以我可以轻松地创建5个左右的参数并单独传递它们,但是如果有数百个呢? 有没有办法用逗号分隔参数调用Fill()方法? (我知道我可以使用动态SQL来创建语句并执行它但更喜欢是否有另一种方式允许我保留我的类型化数据集以用于例如ReportViewer / bindingsources)