Hi rishidevmsb,
You need to check student record for the date is exists before insert.
Refer below modified code.
string strcon = ConfigurationManager.ConnectionStrings["rkcomputers"].ConnectionString;
protected void Page_Load(object sender, EventArgs e)
{
DateTime utcNow = DateTime.UtcNow;
TimeZoneInfo indiaTimeZone = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time");
DateTime indiaTime = TimeZoneInfo.ConvertTimeFromUtc(utcNow, indiaTimeZone);
Label1.Text = indiaTime.ToString();
}
protected void Button1_Click(object sender, EventArgs e)
{
studentattendance();
Response.Write("<script>alert('Student Attendance SAVED for TODAY...');</script>");
}
private void saveattendance(int admissionno, string studentname, string dateofclass1, string status, string sclass)
{
string query = "insert into StudentAttendance(admissionno,studentname,dateofclass,attendancestatus,class) values(" + admissionno + ",'" + studentname + "','" + dateofclass1 + "', '" + status + "','" + sclass + "')";
SqlConnection con = new SqlConnection(strcon);
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = query;
cmd.Connection = con;
cmd.ExecuteNonQuery();
}
bool checkstudentexist(int admissionno, string dateofclass)
{
try
{
SqlConnection con = new SqlConnection(strcon);
if (con.State == ConnectionState.Closed)
{
con.Open();
}
SqlCommand cmd = new SqlCommand("SELECT * from StudentAttendance where dateofclass = @dateofclass AND admissionno = @admissionno", con);
cmd.Parameters.AddWithValue("@dateofclass", dateofclass);
cmd.Parameters.AddWithValue("@admissionno", admissionno);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count >= 1)
{
return true;
}
else
{
return false;
}
}
catch (Exception ex)
{
Response.Write("<script>alert('" + ex.Message + "');</script>");
return false;
}
}
void studentattendance()
{
try
{
foreach (GridViewRow row in GridView1.Rows)
{
int admissionno1 = Convert.ToInt32(row.Cells[0].Text);
string studentname1 = row.Cells[1].Text;
RadioButton rbtn1 = (row.Cells[2].FindControl("RadioButton1") as RadioButton);
RadioButton rbtn2 = (row.Cells[2].FindControl("RadioButton2") as RadioButton);
string status1;
if (rbtn1.Checked)
{
status1 = "Present";
}
else
{
status1 = "Absent";
}
DateTime utcNow = DateTime.UtcNow;
TimeZoneInfo indiaTimeZone = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time");
DateTime indiaTime = TimeZoneInfo.ConvertTimeFromUtc(utcNow, indiaTimeZone);
string dateofclass1 = indiaTime.ToString();
string sclass1 = DropDownList1.SelectedItem.Text;
// Check student record exists or not.
// If not exists then insert
if (!checkstudentexist(admissionno1, dateofclass1))
{
saveattendance(admissionno1, studentname1, dateofclass1, status1, sclass1);
}
else
{
Response.Write("<script>alert('Already Student Attendance SAVED for TODAY...');</script>");
}
}
}
catch (Exception Ex)
{
// Response.Write("<script>alert('" + ex.Message + "');</script>");
}
}
Note: Always use parameterised query to prevent SQL Injection. For more details refer below article.
Using Parameterized queries to prevent SQL Injection Attacks in SQL Server