2016-08-03 1 views
0

テキストボックスを使用してWebフォームからデータを読み込み、それをSQLデータベースに挿入しています。私は3つの異なるテキストボックスの文字列入力をデータベース内の一致するデータ型に解析する必要がありました。私はデータベース内でnullを許可しますが、コードを実行すると、ボックスの1つに値がなければ、解析文に到達すると失敗します。テキストボックスに内容がある場合にのみ、解析を実行するにはどうすればよいですか?申し訳ありませんが、おそらく非常に簡単な解決策ですが、コンパイルするものは何も書いていないようです。入力が読み取られていない場合、フィールドが解析されたままになることを許可する

**私のデータベースのPKであるのでISBNは必須ですので、私のISBN解析行は無視してください。しかし、例えば、本は13digit ISBN(PK)を有していてもよいが、10桁のISBN番号を持っていますが、それがない場合、私は持っていけない場合、私は、DB

 protected void Button1_Click(object sender, EventArgs e) 
    { 


     //Convert int to long for ISBN 
     long lng = long.Parse(txtISBN.Text); 


     //convert string to int for 10 digit isbn 
     int tenISBN = int.Parse(txtP1.Text); 


     //convert string to int for Vendor ISBN 
     int vendISBN; 
     vendISBN = Convert.ToInt32(txtVendorISBN.Text); 
     vendISBN = int.Parse(txtVendorISBN.Text); 


     //Table adapter object to Insert Data 
     DataSet1TableAdapters.TableBookTableAdapter bookTableAdapter; 
     bookTableAdapter = new DataSet1TableAdapters.TableBookTableAdapter(); 

     DataSet1TableAdapters.CourseTableAdapter courseAdapter; 
     courseAdapter = new DataSet1TableAdapters.CourseTableAdapter(); 
     courseAdapter.Insert(courseID: txtCourseID.Text, CourseTitle: txtCourseTitle.Text); 




     //Adapter insert Statement 
     bookTableAdapter.Insert(ISBN: lng, courseID: txtCourseID.Text, bookTitle: txtBookTitle.Text, Ancillary: txtAncillary.Text, 
      bookActive: bookActive, ActiveDate: activeCalendar.SelectedDate, InactiveDate: inactiveCalendar.SelectedDate, Author: txtAuthor.Text, Imprint: txtImprint.Text, 
      Publisher: txtPublisher.Text, EditionDate: txtEditionDate.Text, VendorISBN: vendISBN, p1: tenISBN, eBookAvailable: eBookAvailable, eISBN: txtEISBN.Text, Notes: txtNotes.Text); 


    } 

答えて

1

にそれを格納するために必要だありません私が parseステートメントに達すると、それは失敗したボックスの1つの値です。

あなたは、あなたのテキストボックスがコンテンツを持っている場合は、最初のチェックする必要があり、あなたはこのようにそれを行うことができます:テキストボックスの内容は、その後の解析が行われることはありませんヌル、または空の場合

if(!string.IsNullOrEmpty(txtISBN.Text)) 
    log = long.Parse(txtISBN.Text); 

0

Nullable<T>タイプを使用するか、単にint?を使用して、各アイテムを手動で解析することができます。といった。

int? tenISBN = null, 
    vendISBN = null; 

int iParse; 

long? lng = null; 
long lParse; 

if (!string.IsNullOrWhiteSpace(txtISBN.Text) && long.TryParse(txtISBN.Text, out lParse)) 
    lng = lParse; 

if (!string.IsNullOrWhiteSpace(txtP1.Text) && int.TryParse(txtP1.Text, out iParse)) 
    tenISBN = iParse; 

if (!string.IsNullOrWhiteSpace(txtVendorISBN.Text) && int.TryParse(txtVendorISBN.Text, out iParse)) 
    vendISBN = iParse; 


if (lng.HasValue) //lng has value 
{ 
    //DO Your work 
} 
関連する問題