Нужен идентификатор для загрузки листа excel в gridview

У меня есть функция для загрузки данных листа Excel в gridview. Данные будут вставлены в дочернюю таблицу базы данных.

Теперь, Моя проблема здесь. Один из столбцов имеет отношение к главной таблице.

Итак, до тех пор, пока я не добавлю этот столбец ID, который имеет отношение, он дает мне ошибку как

Столбец Student_id не указан

Вот мой код

using (SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DefaultCSRConnection"].ConnectionString))
{
    con.Open();
    SqlCommand cmd = new SqlCommand("Select count(email) from tbl_student_report where email=@email", con);
    cmd.Parameters.Add("@email", SqlDbType.VarChar).Value = dt.Rows[i]["Email Id"].ToString();

    int count = (int)cmd.ExecuteScalar();

    if (count > 0)
    {
        ScriptManager.RegisterStartupScript(this, this.GetType(), "alert", "alert('Duplicate user in the sheet, Sheet will not be uploaded..!!!');window.location ='csrstudentprogress.aspx';", true);
        continue;
    }
    cmd = new SqlCommand("INSERT INTO tbl_student_report(NgoId,student_id,name,email,class,attendance,english_subject_marks,math_subject_marks,academic_performance,extra_activities,social_skills,general_health,date_of_record,modified_date,status,active) VALUES(@NgoId,@student_id,@name,@email,@class,@attendance,@english_subject_marks,@math_subject_marks,@academic_performance,@extra_activities,@social_skills,@general_health,@date_of_record,@modified_date,@status,@active)", con);
    cmd.Parameters.Add("@NgoId", SqlDbType.Int).Value = dt.Rows[i]["NgoId"].ToString();
    cmd.Parameters.Add("@student_id", SqlDbType.Int).Value = dt.Rows[i]["StudentId"].ToString();
    cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = dt.Rows[i]["Name"].ToString();
    cmd.Parameters.Add("@email", SqlDbType.NVarChar).Value = dt.Rows[i]["Email Id"].ToString();
    cmd.Parameters.Add("@class", SqlDbType.VarChar).Value = dt.Rows[i]["Class"].ToString();
    cmd.Parameters.Add("@attendance", SqlDbType.Decimal).Value = dt.Rows[i]["Attendance"].ToString();

    cmd.Parameters.Add("@english_subject_marks", SqlDbType.Int).Value = dt.Rows[i]["English Subject Marks"].ToString();
    cmd.Parameters.Add("@math_subject_marks", SqlDbType.Int).Value = dt.Rows[i]["Maths Subject Marks"].ToString();
    cmd.Parameters.Add("@academic_performance", SqlDbType.NVarChar).Value = dt.Rows[i]["Academic Performance"].ToString();
    cmd.Parameters.Add("@extra_activities", SqlDbType.NVarChar).Value = dt.Rows[i]["Extra Activities"].ToString();
    cmd.Parameters.Add("@social_skills", SqlDbType.NVarChar).Value = dt.Rows[i]["Social Skills"].ToString();
    cmd.Parameters.Add("@general_health", SqlDbType.NVarChar).Value = dt.Rows[i]["General Health"].ToString();

    cmd.Parameters.Add("@status", SqlDbType.Bit).Value = dt.Rows[i]["Status"].ToString();
    cmd.Parameters.Add("@date_of_record", SqlDbType.DateTime).Value = dt.Rows[i]["Date Of Record"].ToString();
    cmd.Parameters.Add("@modified_date", SqlDbType.DateTime).Value = dt.Rows[i]["Modified Date"].ToString();
    cmd.Parameters.Add("@active", SqlDbType.Bit).Value = dt.Rows[i]["Active"].ToString();

    cmd.ExecuteNonQuery();

    con.Close();

    ScriptManager.RegisterStartupScript(this, this.GetType(), "alert", "alert('Sheet uploaded successfully');window.location ='csrstudentprogress.aspx';", true);
} 

Пожалуйста, предложите, что делать в этом случае, потому что Пользователь не добавит student_id в таблицу Excel и не загрузит.

Я использую sql-server 2008

Как этого добиться??


person hud    schedule 15.04.2015    source источник
comment
Почему бы просто не получить нужный идентификатор? Есть ли какая-то причина, по которой вы не можете выполнить запрос для выбора идентификатора на основе имеющейся у вас информации?   -  person Pseudonym    schedule 15.04.2015
comment
@Pseudonym: я тебя не понял. Кстати, о каком запросе ты говоришь.   -  person hud    schedule 15.04.2015
comment
Я говорю о добавлении запроса, который вы пишете, чтобы получить доступ к нужному вам столбцу Id.   -  person Pseudonym    schedule 15.04.2015
comment
@Pseudonym: Кроме того, я буду загружать большие объемы данных на лист Excel. как я тоже напишу запрос для этого?   -  person hud    schedule 15.04.2015
comment
@Pseudonym: Можете ли вы помочь мне с этим запросом, так как мне немного не хватает sql   -  person hud    schedule 15.04.2015
comment
Так же, как вы написали другие запросы? Похоже, вы просите кого-то написать для вас код, а это не то, о чем этот сайт. Однако, чтобы попытаться ответить на ваш вопрос, вам нужно использовать информацию, которая у вас есть в загрузке, чтобы запустить оператор выбора, чтобы получить нужный вам идентификатор.   -  person Pseudonym    schedule 15.04.2015
comment
Я считаю, что это хороший учебник: w3schools.com/sql   -  person Pseudonym    schedule 15.04.2015
comment
@Pseudonym: Большое спасибо за это, я пытаюсь этого добиться. было бы лучше, если бы вы дали некоторые логические идеи..!!   -  person hud    schedule 15.04.2015


Ответы (1)


Я сделал это, попробовав себя, как показано ниже: -

Вспомогательный класс

public static DataTable GetUserIdByName(string userName,string userType)
    {
        string conString = ConfigurationManager.ConnectionStrings["DefaultCSRConnection"].ConnectionString;
        using (SqlConnection con = new SqlConnection(conString))
        {
            SqlCommand cmd = new SqlCommand("SELECT * FROM tbl_User WHERE Username=@Username AND UserType=@UserType", con);
            cmd.Parameters.Add("@username", SqlDbType.VarChar).Value = userName;
            cmd.Parameters.Add("@UserType", SqlDbType.VarChar).Value = userType;

            con.Open();
            SqlDataReader dr = cmd.ExecuteReader();

            DataTable dt = new DataTable();
            dt.Load(dr);
            return dt;
        }
    }

И вызов класса в функции экспорта сделал свое дело: -

DataTable table = GeneralHelper.GetUserIdByName(Session["User"].ToString(), Session["UserType"].ToString());

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                using (SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DefaultCSRConnection"].ConnectionString))
                {
                    con.Open();

                    if (table != null && table.Rows.Count > 0)
                    {
                        string StudentId = GetNgoIdStudentId(dt.Rows[i]["Email Id"].ToString());
                        if (StudentId != null)
                        {
                            SqlCommand cmd = new SqlCommand("INSERT INTO tbl_student_report(student_id,name,emailid,class,attendance,english_subject_marks,math_subject_marks,academic_performance,extra_activities,social_skills,general_health,date_of_record,modified_date,status,active) VALUES(@student_id,@name,@emailid,@class,@attendance,@english_subject_marks,@math_subject_marks,@academic_performance,@extra_activities,@social_skills,@general_health,@date_of_record,@modified_date,@status,@active)", con);

                            cmd.Parameters.Add("@NgoId", SqlDbType.Int).Value = table.Rows[0]["NgoId"].ToString();
                            cmd.Parameters.Add("@student_id", SqlDbType.Int).Value = StudentId;

                            cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = dt.Rows[i]["Name"].ToString();
                            cmd.Parameters.Add("@emailid", SqlDbType.NVarChar).Value = dt.Rows[i]["Email Id"].ToString();
                            cmd.Parameters.Add("@class", SqlDbType.VarChar).Value = dt.Rows[i]["Class"].ToString();
                            cmd.Parameters.Add("@attendance", SqlDbType.Decimal).Value = dt.Rows[i]["Attendance"].ToString();

                            cmd.Parameters.Add("@english_subject_marks", SqlDbType.Int).Value = dt.Rows[i]["English Subject Marks"].ToString();
                            cmd.Parameters.Add("@math_subject_marks", SqlDbType.Int).Value = dt.Rows[i]["Maths Subject Marks"].ToString();
                            cmd.Parameters.Add("@academic_performance", SqlDbType.NVarChar).Value = dt.Rows[i]["Academic Performance"].ToString();
                            cmd.Parameters.Add("@extra_activities", SqlDbType.NVarChar).Value = dt.Rows[i]["Extra Activities"].ToString();
                            cmd.Parameters.Add("@social_skills", SqlDbType.NVarChar).Value = dt.Rows[i]["Social Skills"].ToString();
                            cmd.Parameters.Add("@general_health", SqlDbType.NVarChar).Value = dt.Rows[i]["General Health"].ToString();

                            cmd.Parameters.Add("@status", SqlDbType.Bit).Value = dt.Rows[i]["Status"].ToString();
                            if (string.IsNullOrEmpty(dt.Rows[i]["Date Of Record"].ToString()))
                            {
                                cmd.Parameters.Add("@date_of_record", SqlDbType.DateTime).Value = DateTime.Now;
                            }
                            else
                            {
                                cmd.Parameters.Add("@date_of_record", SqlDbType.DateTime).Value = dt.Rows[i]["Date Of Record"].ToString();
                            }
                            if (string.IsNullOrEmpty(dt.Rows[i]["Modified Date"].ToString()))
                            {
                                cmd.Parameters.Add("@modified_date", SqlDbType.DateTime).Value = DateTime.Now;
                            }
                            else
                            {
                                cmd.Parameters.Add("@modified_date", SqlDbType.DateTime).Value = dt.Rows[i]["Modified Date"].ToString();
                            }
                            cmd.Parameters.Add("@active", SqlDbType.Bit).Value = dt.Rows[i]["Active"].ToString();

                            cmd.ExecuteNonQuery();

                            con.Close();

                            ScriptManager.RegisterStartupScript(this, this.GetType(), "alert", "alert('Sheet uploaded successfully');window.location ='csrstudentprogress.aspx';", true);
                        }
                        else
                        {
                            ScriptManager.RegisterStartupScript(this, this.GetType(), "alert", "alert('Student not found');", true);
                        }
                    }
                    else
                    {
                        //Error
                    }
                }
            }
person hud    schedule 18.04.2015