【发布时间】:2014-04-04 14:39:40
【问题描述】:
我在 .NET 数据集中有这种数据转换的案例:我有一个新数据库,我已经在我的数据集中查询了一个表,但我不知道数据集中 DataTable 的 DataColumn 的确切数据类型,我想插入一些新的在设计时不确切知道 DataColumn.DataType 的数据。所以,我的想法是我可以使用反射来获取 DataColumn 的类型以精确插入新数据。 有人能告诉我是否可以这样做以及如何做吗?
SomeDbDataAdapter da = new SomeDbDataAdapter("select * from table1", conn);
DataSet ds = new DataSet();
da.Fill(ds);
Int32 i = 1;
DataRow dr = ds.Tables[0].NewRow();
PropertyInfo colInfo = dr.GetType().GetProperty("COLUMN1");
Type t = ds.Tables[0].Columns["COLUMN1"].DataType;
colInfo.SetValue(dr, Convert.ChangeType(i, t), null);
ds.Tables[0].Rows.Add(dr);
SomeDbCommandBuilder builder = new SomeDbCommandBuilder(da);
builder.GetInsertCommand();
DataRow[] rows = ds.Tables[0].Select("", "", DataViewRowState.Added);
da.Update(rows);
【问题讨论】:
-
你能发布你的代码吗?
-
Int32 i = 1; DataRow dr = ds.Tables[0].NewRow(); PropertyInfo colInfo = dr.GetType().GetProperty("COLUMN1");类型 t = ds.Tables[0].Columns["COLUMN1"].DataType; colInfo.SetValue(dr, Convert.ChangeType(i, t), null);
-
@Lourens:我想要动态属性设置值之类的东西
-
@Blam:你能描述更多细节吗?我上面代码的问题是 dr.GetType().GetProperty("COLUMN1") 返回 null。
-
没关系。我误解了这个问题。
标签: .net reflection dataset typeconverter changetype