Try something more like this (what I show may not be exactly correct for your needs). If you need to loop through more tables in the set then add another loop.
con.Open()
Dim cmd1 As SqlCommand
cmd1 = New SqlCommand("INSERT INTO Students (student_fullname, student_branch, student_scholarship) VALUES (@student_fullname, @student_branch, @student_scholarship)", con)
cmd1.Parameters.Add ( new SqlParameter ( @student_fullname , nothing ) )
cmd1.Parameters.Add ( new SqlParameter ( @student_branch , nothing ) )
cmd1.Parameters.Add ( new SqlParameter ( @student_scholarship , nothing ) )
For Each Drr As DataRow In DtSet.Tables(0).Rows
cmd1.Parameters ( @student_fullname ).Value = Drr(1)
cmd1.Parameters ( @student_branch ).Value = Drr(2)
cmd1.Parameters ( @student_scholarship ).Value = Drr(3)
cmd1.ExecuteNonQuery()
Next
MsgBox("Successfully Saved")
con.Close()