C# 需要Id才能在gridview中上载excel工作表

C# 需要Id才能在gridview中上载excel工作表,c#,asp.net,sql-server,gridview,import-from-excel,C#,Asp.net,Sql Server,Gridview,Import From Excel,我有一个将Excel工作表数据上传到gridview的功能。数据将被插入到数据库的子表中 现在,我的问题是。其中一列与主表有关系 所以,除非我添加有关系的列ID,否则它会给我错误 未提供学生id列 这是我的密码 using (SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DefaultCSRConnection"].ConnectionStrin

我有一个将Excel工作表数据上传到gridview的功能。数据将被插入到数据库的子表中

现在,我的问题是。其中一列与主表有关系

所以,除非我添加有关系的列
ID
,否则它会给我错误

未提供
学生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);
} 
请建议在这种情况下该怎么做,因为用户不会在excel工作表中添加
学生id
,也不会上传

我正在使用
sql server 2008


如何做到这一点???

我是通过以下方式尝试完成的:-

助手类

在导出函数中调用类完成了这项工作:-

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
                    }
                }
            }
DataTable table=GeneralHelper.GetUserIdByName(会话[“用户”].ToString(),会话[“用户类型”].ToString());
对于(int i=0;i0)
{
string StudentId=GetNgoIdStudentId(dt.Rows[i][“Email Id”].ToString());
如果(StudentId!=null)
{
SqlCommand cmd=new SqlCommand(“插入tbl_学生报告(学生id、姓名、电子邮件id、班级、出勤率、英语科目分数、数学科目分数、学业成绩、额外活动、社交技能、一般健康状况、记录日期、修改日期、状态、活动)值(@student\u id、@name、@emailid、@class、@attention、@english\u subject\u marks、@math\u subject\u marks、@学术成绩、@extra\u活动、@social\u技巧、@general\u health、@date\u of记录、@modified\u日期、@status、@active)”,con);
cmd.Parameters.Add(“@NgoId”,SqlDbType.Int).Value=table.Rows[0][“NgoId”].ToString();
cmd.Parameters.Add(“@student\u 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(“@attention”,SqlDbType.Decimal).Value=dt.Rows[i][“attention”].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][“math subject marks”].ToString();
cmd.Parameters.Add(“@academical_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][“记录日期”]].ToString())
{
cmd.Parameters.Add(“@date\u of_record”,SqlDbType.DateTime).Value=DateTime.Now;
}
其他的
{
cmd.Parameters.Add(“@date\u of_record”,SqlDbType.DateTime).Value=dt.Rows[i][“记录日期”].ToString();
}
if(string.IsNullOrEmpty(dt.Rows[i][“修改日期”]].ToString())
{
cmd.Parameters.Add(“@modified_date”,SqlDbType.DateTime).Value=DateTime.Now;
}
其他的
{
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(),“警报”,“警报('Sheet upload successfully');window.location='csrstudentprogress.aspx';”,true);
}
其他的
{
ScriptManager.RegisterStartupScript(this,this.GetType(),“alert”,“alert('Student not found');”,true);
}
}
其他的
{
//错误
}
}
}

为什么不直接获取您需要的Id?您有什么原因不能根据手头的信息运行查询来选择Id吗?@笔名:我没有弄清楚。顺便问一下,您在说什么查询。我在说添加一个您编写的查询以访问您需要的Id列。@笔名:另外,我将上载大量数据在excel工作表中。我也将如何编写该查询?@笔名:你能帮我完成该查询吗,因为我有点缺乏
sql
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
                    }
                }
            }