在将记录插入数据库时,我遇到了数据集问题。我有一个表地址,其中 phno(AllowNulls = False,Defaultvalue ='0')< / em> 和 mbno(AllowNulls = True,Defaultvalue ='0') 。当我没有提供任何输入时,通过数据集将记录插入数据库在两列中,phno采用默认值('0'),mbno采用“Null”。我认为两者都必须在没有输入时采用默认值。
我不知道为什么会这样。我已经编写了这样的代码
SqlConnection con = new SqlConnection(connStr);
DataSet ds = new DataSet();
DataRow dr;
SqlCommand cmd = new SqlCommand("select * from address",con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
SqlCommandBuilder cmdBuilder;
da.FillSchema (ds,SchemaType.Source );
da.Fill(ds, "address");
dr = ds.Tables["address"].NewRow();
dr["sname"] = "tomy";
dr["fname"] = "peter";
ds.Tables["address"].Rows.Add(dr);
cmdBuilder = new SqlCommandBuilder(da);
da.Update(ds, "address");
答案 0 :(得分:2)
在此msdn reference page的备注部分中,将解释在哪些情况下将插入什么值。
由于DataSet上的AllowNulls = true
,它可能会向数据库提交null
,这将使数据库插入null
。
如果要插入默认值,请删除AllowNulls
或从insert语句中显式删除该参数(在这种情况下,您必须编写自己的InsertCommand)。
顺便说一下,你想通过AllowNull和Default的组合得到什么?
答案 1 :(得分:1)
好吧,如果您在列中允许Null,那么它将使用Null更新,而不是默认值。因此,要么将列更改为Allow nulls = false,要么从代码传递默认值。