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 リファレンス ページの備考セクションでは、どの場合にどの値が挿入されるかについて説明されています。あなたのDataSetでは、おそらくaをデータベースに送信するため、データベース
は. デフォルト値を挿入したい場合は、insert ステートメントからパラメーターを削除するか、明示的に削除します (この場合、独自の InsertCommand を記述する必要があります)。 AllowNulls = truenullnullAllowNulls

ところで、AllowNull と Default の組み合わせで何をアーカイブしたいですか?

于 2013-01-21T06:54:41.930 に答える
1

まあ、列に Null を許可していれば、もちろんデフォルト値ではなく Null で更新されます。そのため、列を Allow nulls=false に変更するか、コードからデフォルト値を渡します。

于 2013-01-21T06:53:39.030 に答える