2017-03-04 26 views
1

私が達成したいのは、生徒がシステムにログインするときに、システムはstudentIDをデータベースから取得する必要があるということです。それから私の "テストフォーム" - 学生がテストを受ける場所。システムは、テストの詳細とテストを受けたstudentIDとを「テスト」テーブルに追加する必要があります。C#の他のフォームに同じ変数を渡す方法

問題:ログインフォームからstudentIDをテストフォームに渡す方法がわかりません。

は、私は私が撮った研究からの結果であるアウトしようとしたいくつかのコードを持っているが、それはまだ私のために動作しません。フォームのコードで

ログ:[のみ該当ビットが「StudentID」の部分であります]

//gets the info and checks if the input is same as contents in DB 
using (MySqlConnection connection = new MySqlConnection("datasource=localhost;port=3306;database=project;username=root;password=***;")) 
{ 
MySqlCommand cmd = new MySqlCommand("SELECT student.studentID, student.studentUsername, student.studentPassword, student.studentFirstName, student.studentLastName, teacher.teacherUsername, teacher.teacherPassword, teacher.teacherFirstName, teacher.teacherLastName FROM student, teacher WHERE (student.studentUsername = @userName AND student.studentPassword = @passWord) OR (teacher.teacherUsername = @teacherUser AND teacher.teacherPassword = @teacherPass);"); 
cmd.CommandType = CommandType.Text; 
cmd.Connection = connection; 
cmd.Parameters.AddWithValue("@userName", textboxUsername.Text); 
cmd.Parameters.AddWithValue("@passWord", texBoxPassword.Text); 
cmd.Parameters.AddWithValue("@teacherUser", textboxUsername.Text); 
cmd.Parameters.AddWithValue("@teacherPass", texBoxPassword.Text); 
MySqlDataReader DBReader; 
cmd.Connection = connection; 
connection.Open(); 
DBReader = cmd.ExecuteReader(); 
while (DBReader.Read()) 
{ 
var teacherFirstName = DBReader.GetString("teacherFirstName"); 
var teacherLastName = DBReader.GetString("teacherLastName"); 
var teacherLogin = DBReader.GetString("teacherUsername"); 
var teacherPass = DBReader.GetString("teacherPassword"); 
var studentFirstName = DBReader.GetString("studentFirstName"); 
var studentLastName = DBReader.GetString("studentLastName"); 
var studentLogin = DBReader.GetString("studentUsername"); 
var studentPass = DBReader.GetString("studentPassword"); 
string studentID = DBReader.GetString("studentID"); 
if (teacherLogin == textboxUsername.Text && teacherPass == texBoxPassword.Text) 
{ 
MessageBox.Show("Welcome " + teacherFirstName + " " + teacherLastName); 
this.Hide(); 
TeacherHomepage Form = new TeacherHomepage(); 
Form.Show(); 
} 
else if (studentLogin == textboxUsername.Text && studentPass == texBoxPassword.Text) 
{ 
    MessageBox.Show("Welcome " + studentFirstName + " " + studentLastName); 
    this.Hide(); 
    Test ss = new Test(studentID); 
    ss.Show(); 
} 
    else 
{ 
    MessageBox.Show("username or password invalid"); 
} 

テストフォームコード:

public Test(string studentID) 
{ 
    InitializeComponent(); 
    int StudentID = Convert.ToInt32(studentID); 
} 

注: ログインのものが作品: 私はstudeと同じStudentIDをしたいですログインして "test"の形式で使用するユーザー。また、StudentIDがローカル変数の場合、他の関数のテストフォームで "studentID"変数を使用するにはどうすればよいですか?また、私はクラス(OOP)を使用していないことに注意してください。より簡単な方法があれば教えてください。

答えて

1

テストフォームの自動プロパティまたはフィールドとしてStudentIDを追加できます。それで--- ---

Public int StudentID {get; set;} 

public Test(string studentID) 
{ 
InitializeComponent(); 
StudentID = Convert.ToInt32(studentID); 
} 
-1

公共の変数をクラスに宣言し、学生IDの値を格納するために使用できます。あなたはそれが好きな場所で使うことができます。

Public static int student_id; 
関連する問題