790 likes | 912 Vues
BİL528 – Bilgisayar Programlama II. Database Operations II. Contents. Adding a new record into database Changing an existing record Deleting a record Displaying data from multiple tables. 3. Writing the Program. Adding database file into solution Displaying students Adding new student
E N D
BİL528 – Bilgisayar Programlama II Database Operations II
Contents • Adding a new record into database • Changing an existing record • Deleting a record • Displaying data from multiple tables
3. Writing the Program • Adding database file into solution • Displaying students • Adding new student • Changing student info • Deleting a student • Displaying all courses a student take
Create a New Form “frmNewStudent” tbFirstName tbLastName calBirthDay numAge btnOK with DialogResult = OK btnCancel with DialogResult = Cancel
Double-Click OK Button and Write the Following Code studentsTableAdapter1.Insert(tbFirstName.Text,tbLastName.Text,calBirthDay.Value,(short)numAge.Value);
Double-Click the Button and Write the Following Code: frmNewStudent frm = new frmNewStudent(); DialogResult result = frm.ShowDialog(); if (result == DialogResult.OK) { studentsTableAdapter.Fill( schoolDataSet.Students); }
Some Notes • If you close your application, make some changes in your program, build the program again, and execute the program, the last added records won’t be visible! • This is because each time you build the project, original database file is copied into the Debug folder in your solution and all operations are made on this copy.
Create a new form “frmChangeStudent” similar to “frmNewStudent”
Binding Data to the Controls • In order to fill the controls, we are going to use data binding feature instead of changing contents of the controls. • The frmChangeStudent form needs the StudentID to display the data of the selected student. • For this purpose, create a property in frmChangeStudent form. This property will transfer student ID from main form to frmChangeStudent form.
The type of the property is “int” and it is ok, so press “Tab” key
All spaces are filled, so press “Enter” key. The property is ready now!
Select “First Name” text box. You’ll see “DataBindings” section in the Properties window
We want to bind the Text property of the textbox, so click “Text”
Click plus sign near “Students” and click “FirstName” field
Notice that a new “Fill” code has been added into the “Load” event of the form
“FillByStudentID” instead of “Fill” • We want to display the data of only one student. • So, we need to use FillByStudentID method instead of Fill method. • Delete the line and write this: this.studentsTableAdapter.FillByStudentID(this.schoolDataSet.Students,this.StudentID);
OK Button • When the form is displayed, the data of the student is displayed on the controls. • User changes these data and presses OK button. • So, we need to write updating code into the Click event of the OK button.
Updating to Database • The modifications made by the user must be applied to the data set. This is accomplished by the EndEdit() method of the BindingSource object. • The changes on the data set is applied to the database by the Update() method of the studentTableAdapter object.
OK Button Click Event • Double-click the OK button and write this code: this.studentsBindingSource.EndEdit(); this.studentsTableAdapter.Update(this.schoolDataSet.Students);
Passing Student ID • Now, the form can display and update the data of the student whose ID is specified by the StudentID property. • So, we need to set this property before the form is shown. • This should be done in the main form.
Getting the ID of the selected student • The ID of the student selected from the DataGridView object can be obtained in two ways: • Get the ID from the first cell of the selected row or the DataGridView. • Get the ID from the binding source object.
1. Getting ID from DataGridView int studentID =(int)dataGridView1.SelectedRows[0].Cells[0].Value; • In order this code to be successfully executed, you need to set MultiSelect property of the DataGridView object to False and SelectionMode property to FullRowSelect.
2. Getting ID from Binding Source • When a row is selected in the DataGridView object, the information about the selected row is stored in binding source object. You can get the StudentID by using this code: DataRowViewrowView = (DataRowView)studentsBindingSource.Current; SchoolDataSet.StudentsRowrow = (SchoolDataSet.StudentsRow)rowView.Row; intstudentID = row.StudentID;
Creating the frmChangeStudent dialog and passing student ID • Add a new button with the text “Change Student Info” into the main form. • Write the code given in the next slide into the Click event handler of the button.
DataRowViewrowView = (DataRowView)studentsBindingSource.Current; SchoolDataSet.StudentsRow row = (SchoolDataSet.StudentsRow)rowView.Row; intstudentID = row.StudentID; frmChangeStudentfrm = new frmChangeStudent(); frm.StudentID = studentID; DialogResult result = frm.ShowDialog(); if (result == DialogResult.OK) { // Update the DataGridView: this.studentsTableAdapter.Fill(this.schoolDataSet.Students); }
Run the program, select a student, and click “Change Student” button