1

在将记录插入 DB 时,我遇到了数据集的问题。我有一个表地址,其中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");
4

2 回答 2

2

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

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

于 2013-01-21T06:54:41.930 回答
1

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

于 2013-01-21T06:53:39.030 回答