datatable.rows.addnew() 如何自动填入数据库内的字段默认值

uncleson88 2009-01-18 03:29:07
如题,MSSQL数据库中设定了表中字段的默认值,
DataRow=DataTable.Rows.AddNew();
//**填入未设默认值的字段
DataTable.Rows.Add(DataRow);
DataAdapter.Update(DataTable);
写入数据库后,所有设定了默认值的字段均为NULL而不是默认值,这是为什么?该如何解决?
字段太多,不想每个字段逐一写代码,而且既然要自己写代码填入的话,那在数据库里设定默认值还有个P用啊
...全文
359 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
superzxf 2009-01-18
  • 打赏
  • 举报
回复
dataset中的table中的默认值并不会默认取数据库中的默认值,fill也不会自动填入,真tmd弱智,需要自己填入,超郁闷的
我一般是写个程序来自动填入
思路是执行系统存储过程sp_columns_rowset,取得某张表的定义信息,读出每个字段的默认值,写入到datatable中对应的字段中
uncleson88 2009-01-18
  • 打赏
  • 举报
回复
我会一直顶下去,顶到地老天荒~~~~~~~~~~~~~~
uncleson88 2009-01-18
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 talen_lu 的回复:]
人不能懒,写一个方法赋值,一处写多处使用.
也可以在实体类中加入这些方法.
[/Quote]

这位老兄说得也有道理,不过我就是不死心啊,在线等 ing ...
uncleson88 2009-01-18
  • 打赏
  • 举报
回复
这是我的代码,两个表中都有几十个字段,我真不想逐个字段的用代码写入默认值

SqlDataAdapter da1,da2;string sql;
sql = "select * from tb_main where anhao='" + the_anhao + "'";
da1 = new SqlDataAdapter(sql, conn);
sql = "select * from tb_add where anhao='" + the_anhao + "'";
da2 = new SqlDataAdapter(sql, conn);
conn.Open();
da1.Fill(ds, "tb1");
da1.FillSchema(ds, SchemaType.Mapped, "tb1");
da2.Fill(ds, "tb2");
da2.FillSchema(ds, SchemaType.Mapped, "tb2");
SqlCommandBuilder builder1 = new SqlCommandBuilder(da1);
SqlCommandBuilder builder2 = new SqlCommandBuilder(da2);


DataRow drow = ds.Tables["tb1"].NewRow();
//只填了少数几个必填字段,其他的在数据库里设了默认值
drow["anhao"] = the_anhao; drow["anlei"] = the_anlei; drow["anlei2"] = the_anlei2;
drow["liucheng"] = 0; drow["dangshirenjianyou"] = the_dangshirenjianyou;
ds.Tables["tb1"].Rows.Add(drow);
dr1 = ds.Tables["tb1"].Rows[0];

drow = ds.Tables["tb2"].NewRow();
drow["anhao"] = the_anhao; drow["s1"] = "uncle"; drow["s2"] = "son";
ds.Tables["tb2"].Rows.Add(drow);
dr2 = ds.Tables["tb2"].Rows[0];

da1.Update(ds, "tb1"); da2.Update(ds, "tb2");

写入数据库后,一个默认值都没填入,全是NULL


talen_lu 2009-01-18
  • 打赏
  • 举报
回复
人不能懒,写一个方法赋值,一处写多处使用.
也可以在实体类中加入这些方法.
simonezhlx 2009-01-18
  • 打赏
  • 举报
回复
fill 时,把相关约束全加上,应该就会包含默认值了,默认列,可以不赋值,就会使用默认值的
gonghuaqiao 2009-01-18
  • 打赏
  • 举报
回复
代码全发出来看看啊
uncleson88 2009-01-18
  • 打赏
  • 举报
回复
救命啊各位大虾!
我自己狂顶!!!!!
uncleson88 2009-01-18
  • 打赏
  • 举报
回复
还是不行啊~~~
找到一个帖子上说用da1.FillSchema(ds, SchemaType.Mapped, "tb1")可以将数据库的字段默认值信息写入dataset中,我试了一下,也不行
救命啊!!!!!!!
wuyq11 2009-01-18
  • 打赏
  • 举报
回复
DataRow=DataTable.Rows.NewRow();
再更新
uncleson88 2009-01-18
  • 打赏
  • 举报
回复
是NewRow(),楼顶手误
uncleson88 2009-01-18
  • 打赏
  • 举报
回复
没错啊,一句都没错啊,
如果不用代码写row["**"]=***的话,不会自动填入数据库中设的字段默认值,全是NULL
gonghuaqiao 2009-01-18
  • 打赏
  • 举报
回复
SqlDataAdapter s = new SqlDataAdapter();
DataTable dt = new DataTable();
DataRow row = dt.NewRow();
dt.Rows.Add(row);
s.Update(dt);


你回去看清楚

111,130

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧