2

I have an application which runs as a windows service and reads a text data file, then maps the file contents to a database. The app uses a batch commit and periodically the data is larger than the database fields.

What is the best way to validate that the data fields are not too big before trying to save them to a database?

4

2 に答える 2

1

System.ComponentModel.DataAnnotationsを使用する場合は、次のようにすることができます。

public class Customer
{
    [StringLength(5)]
    public string Name { get; set; }

    [StringLength(20)]
    public string Phone { get; set; }

    [StringLength(30)]
    public string Email { get; set; }

    [StringLength(30)]
    public string Address { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        Customer c = new Customer 
        {
            Name = "FooBarX",
            Phone = "555-5555-33 ext 234",
            Email = "foobar@foobar.com",
            Address = "1334 foobar ave, foobar CA"
        };

        var ctx = new ValidationContext(c, null, null);
        Validator.ValidateObject(c, ctx,true);

        Console.Read();
    }
}

この場合、 Validator.ValidateObjectStringLengthは、属性によって適用されるNameフィールドが大きすぎるため、例外をスローします。

Validator.TryValidateObjectを使用して、例外をスローする代わりにエラーのリストを返すこともできます。

検証フレームワークは非常に強力です。文字列には正規表現の検証を使用できます。数値フィールドの範囲検証、さらにはカスタム検証。

于 2012-09-07T20:56:36.350 に答える
0

検証するには、データテーブルを使用してデータベースフィールドの最大長を読み取ることができます。

(VB.NETコード)

                DataTable[] myDataTable; 
                oleDbDataAdapter1.Fill(dataSet11); 
                myDataTable = oleDbDataAdapter1.FillSchema(dataSet11, System.Data.SchemaType.Source); 
                TextBox1.Text = myDataTable[0].Columns[0].MaxLength.ToString()

多分このリンクは役立つでしょう...

http://forums.asp.net/t/306971.aspx/1

于 2012-09-07T20:42:33.827 に答える