2016-10-07 10 views
0

次のコードを使用してデータセットに新しいレコードを追加します。ストアドプロシージャこれは私がしようとしているものの上に私のストアドプロシージャに文字列を送信textBox1テキストボックスを指し、「AddStudentDialog」形式のコードの一部であるいくつかのテキストボックスtextBoxから文字列を取得し、ストアドプロシージャにintとして渡します。

addStd = new AddStudentDialog(); 
addStd.Show(); 

studentTableAdapter.Insert(int.Parse(addStd.tb1.Text), addStd.tb2.Text, addStd.tb3.Text, addStd.tb4.Text, addStd.tb5.Text); 
studentTableAdapter.Fill(studentDataSet.Student); 

「を有しAddStudentDialog」という名前の別のフォームからデータを取得整数に変換する。

public TextBox tb1 
{ 
    get 
    { 
     return textBox1; 
    } 
} 

文字列を整数に変換するときにエラーが発生したため、アプリケーションを実行すると問題が発生しました。誰もがそれを解決するためのアイデアを持っていますか?

これはVisual Basicでこのストアドプロシージャを記述したもので、完全に機能します。

StudentTableAdapter.Insert(CType(AddStudentDialog.TextBox1.Text, Integer), AddStudentDialog.TextBox2.Text, AddStudentDialog.TextBox3.Text, AddStudentDialog.TextBox4.Text, AddStudentDialog.TextBox5.Text) 
StudentTableAdapter.Fill(StudentDataSet.Student) 
+0

あなたがADO.NETを使用していますあなたのデータベースに接続するには? – mybirthname

+1

文字列をintに変換する前に入力を確認する必要があります。 'int.Parse'の代わりに' int.TryParse'を使うことで始めることができます。 – haindl

+0

AddStudentDialog.TextBox1.Textに整数値があるかどうかチェックしましたか?最善の方法は、まずそれらを変数に取り入れ、型チェックを実行し、それをprocに渡すことです。 – A3006

答えて

0

最後に、TryParseメソッドを使用してこれを解決しました。これがコードの外観です。

ストアドプロシージャに値を送る 'AddStudentDialog'(のみtextBox1テキストボックスに整数を送信し、他のテキストボックスが文字列を送信):

public int id; 
    public int intID; 
    public string stringID; 
    bool res; 

    public AddStudentDialog() 
    { 
     InitializeComponent(); 
    } 

    public void IntToString() 
    { 
     stringID = textBox1.Text; 
     res = int.TryParse(stringID, out id); 

     if (res == true) 
      intID = id; 
    } 

    public int tbox1 
    { 
     get 
     { 
      return intID; 
     } 
    } 

ストアドプロシージャ:

AddStudentDialog addStd = new AddStudentDialog(); 
     addStd.ShowDialog(); 

     addStd.IntToString(); 

     studentTableAdapter.Insert(addStd.tbox1, addStd.tBox2.Text, addStd.tbox3.Text, addStd.tbox4.Text, addStd.tbox5.Text); 
     studentTableAdapter.Fill(studentDataSet.Student); 
関連する問題