1

C#を使用して.Netのテキストボックスからデータを挿入するだけの簡単なページを作成しています。日付が特定の範囲内にある必要があるというオーバーフロー エラーが発生します。txtBirthdate ボックスに入力されるテキストは、01/01/1980 のようなものになります。

デバッグ時、Client1 _Birthdate オブジェクトは {1/1/1980 12:00:00} を示します。だから私が知る限り、それは本来あるべきことをやっている. 助けてくれてありがとう。

protected void Button1_Click(object sender, EventArgs e)
{
    DataClasses1DataContext db = new DataClasses1DataContext();

    Client client1 = new Client
    {
        FirstName = txtFirstName.Text.ToString(),
        LastName = txtLastName.Text.ToString(),
        MiddleInitial = Convert.ToChar(txtMI.Text),
        Alias = txtAlias.Text.ToString(),
        Address = txtAddress.Text.ToString(),
        City = txtCity.Text.ToString(),
        State = txtState.Text.ToString(),
        Zip = Convert.ToInt32(txtZip.Text),
        Phone = txtPhone.Text.ToString(),
        Birthdate = Convert.ToDateTime(txtBirthdate.Text.ToString()),
        SSN = Convert.ToInt32(txtSSN.Text),
        DLNumber = txtDLNumber.Text.ToString(),
        Gender = Convert.ToByte(ddGender.Text),
        PrimaryRace = Convert.ToByte(ddPrimaryRace.Text),
        SecondaryRace = Convert.ToByte(ddSecondaryRace.Text),
        Ethnicity = Convert.ToByte(ddEthnicity.Text),
        Veteran = Convert.ToBoolean(ddVeteranStatus.Text),
        HoH = Convert.ToBoolean(ddHoH.Text)
    };

    db.Clients.InsertOnSubmit(client1);
    db.SubmitChanges();
}
4

2 に答える 2

1

グレゴワールは正しかった。戻って調べたところ、日付スタンプがありましたが、SQL で getdate() のデフォルト値が設定されていました。日付スタンプ値を渡さなくても挿入できると思いました。どうやらそうではありません。とにかく、DateTime.Now を使用して C# コードから入力することにしました。

于 2010-03-10T21:23:01.713 に答える
0

C# の DateTime.MinValue は SQL の DateTime.MinValue とは異なるため、datetime を SQL-Sever に挿入しようとしている場合は、おそらくその範囲を確認する必要があります。

C# DateTime MinValue = 1/1/0001

SQL DateTime MinValue = 1/1/1753

また

SQL SmallDateTime MinValue = 1/1/1900

C# の DateTime は、null 非許容の変数型です。したがって、DAL のテーブルに挿入する前に、null でないことを確認してください。NULL の場合、MinValue (またはメモリに保存されている任意のランダム値) が使用されます。

于 2010-03-10T21:12:09.803 に答える