当datacoluml为AllowDBNull并且默认值为“0”时,将插入什么值?
本文关键字:插入 什么 AllowDBNull datacoluml 默认值 | 更新日期: 2023-09-27 17:54:55
在将记录插入数据库时,我遇到了数据集的问题。我有一个表地址其中phno (AllowNulls=False,Defaultvalue='0')和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");
在此msdn参考页面的注释部分解释了在哪些情况下将插入什么值。
由于AllowNulls = true
在你的数据集上,它可能会向数据库提交一个null
,这将让数据库插入一个null
。如果希望插入默认值,请删除AllowNulls
或显式地从插入语句中删除该参数(在这种情况下,您必须编写自己的InsertCommand)。
顺便说一句,你想通过AllowNull和Default的组合来归档什么?
嗯,如果你允许在列中为Null,当然它将被更新为Null而不是默认值。因此,要么将列更改为Allow nulls=false,要么从代码传递默认值。