2012-09-07 39 views
2

我有一個應用程序作爲Windows服務運行並讀取文本數據文件,然後將文件內容映射到數據庫。該應用程序使用批量提交併定期數據大於數據庫字段。驗證數據字段在保存到數據庫時不會太大?

在嘗試將數據字段保存到數據庫之前驗證數據字段不是太大的最佳方法是什麼?

+0

是否要截斷數據以使其適合,忽略這些行,忽略整個文件還是什麼? – Servy

+0

在應用程序啓動時從數據庫讀取字段的大小定義,如http://forums.asp.net/t/1132236.aspx/1或這裏http://stackoverflow.com/questions/5705316/how-to -get-the-size-of-varcharn-field-in-one-sql-statement –

回答

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 = "[email protected]", 
      Address = "1334 foobar ave, foobar CA" 
     }; 

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

     Console.Read(); 
    } 
} 

Validator.ValidateObject會在這種情況下拋出一個異常,因爲名稱字段是由StringLength屬性強制太大。

您也可以使用Validator.TryValidateObject這將返回一個錯誤列表,而不是拋出異常。

驗證框架非常強大。您可以對字符串使用正則表達式驗證。數字字段的範圍驗證甚至自定義驗證。

+0

還有用於驗證數字屬性的RangeAttribute – Tevin

+0

@Tevin我想​​我已經提到它了:) –

+0

謝謝 - 會試試看... – user1069733

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

相關問題