当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");

当datacoluml为AllowDBNull并且默认值为“0”时,将插入什么值?

在此msdn参考页面的注释部分解释了在哪些情况下将插入什么值。
由于AllowNulls = true在你的数据集上,它可能会向数据库提交一个null,这将让数据库插入一个null。如果希望插入默认值,请删除AllowNulls或显式地从插入语句中删除该参数(在这种情况下,您必须编写自己的InsertCommand)。

顺便说一句,你想通过AllowNull和Default的组合来归档什么?

嗯,如果你允许在列中为Null,当然它将被更新为Null而不是默认值。因此,要么将列更改为Allow nulls=false,要么从代码传递默认值。