Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当某些数据已存在时停止上载_C#_Html_Asp.net_File Upload_Web Applications - Fatal编程技术网

C# 当某些数据已存在时停止上载

C# 当某些数据已存在时停止上载,c#,html,asp.net,file-upload,web-applications,C#,Html,Asp.net,File Upload,Web Applications,我有一个上传按钮,可以上传excel文件并保存到我的数据库。我想做的是,如果excel文件中有一个或多个数据已经存在,那么其他数据也不会被上传,尽管它还不存在。下面是我添加到数据库和上传按钮的代码 添加到数据库 private void AddNewTrainee(string strdelname, string strrank, string strcomp, string strcourse, string strcenter, string strinst,

我有一个上传按钮,可以上传excel文件并保存到我的数据库。我想做的是,如果excel文件中有一个或多个数据已经存在,那么其他数据也不会被上传,尽管它还不存在。下面是我添加到数据库和上传按钮的代码

添加到数据库

 private void AddNewTrainee(string strdelname, string strrank, string strcomp, string strcourse, string strcenter, string strinst,
                            string strsdate, string stredate, string strcissued, string strcnumber, string strremark, int recdeleted, string credate, string update, int fromupload)
{
    connection.Open();
    String checkDateAndName = "Select count(*) from Trainees where StartDate= '" + strsdate + "' and Delegate='" + strdelname + "' and REC_DELETED = 0  ";
    SqlCommand cmd = new SqlCommand(checkDateAndName, connection);
    int dataRepeated = Convert.ToInt32(cmd.ExecuteScalar().ToString());
    bool boolDataRepated;
    connection.Close();

    if (!(dataRepeated >= 1))
    {
        boolDataRepated = false;
    }
    else
        boolDataRepated = true;

    connection.Open();
    string certNumber = "Select * from CertID_Table update CertID_Table set CertificateID = CertificateID + 1 from CertID_Table ";
    SqlCommand cmdCert = new SqlCommand(certNumber, connection);

    using (SqlDataReader oReader = cmdCert.ExecuteReader())
    {
        while (oReader.Read())
        {
            string test1 = oReader["CertificateID"].ToString();
            ViewState["certnumber"] = test1;
        }
    }
    connection.Close();
    strcnumber = (string)ViewState["certnumber"];


        if (boolDataRepated == false)
        {
            string path = "D:\\Intern\\BASSWeb\\SQLCommands\\AddSQL.txt";
            StringBuilder sb = new StringBuilder();
            using (StreamReader sr = new StreamReader(path))
            {
                while (sr.Peek() >= 0)
                {
                    sb.Append(sr.ReadLine());
                }
                string sql = sb.ToString();
                try
                {
                    connection.Open();
                    SqlCommand cmd1 = new SqlCommand(sql, connection);
                    cmd1.Parameters.AddWithValue("@delName", strdelname);
                    cmd1.Parameters.AddWithValue("@rank", strrank);
                    cmd1.Parameters.AddWithValue("@comp", strcomp);
                    cmd1.Parameters.AddWithValue("@course", strcourse);
                    cmd1.Parameters.AddWithValue("@center", strcenter);
                    cmd1.Parameters.AddWithValue("@instructor", strinst);
                    cmd1.Parameters.AddWithValue("@sdate", strsdate);
                    cmd1.Parameters.AddWithValue("@edate", stredate);
                    cmd1.Parameters.AddWithValue("@cissued", strcissued);
                    cmd1.Parameters.AddWithValue("@cnumber", strcnumber);
                    cmd1.Parameters.AddWithValue("@remark", strremark);
                    cmd1.Parameters.AddWithValue("@rdeleted", recdeleted);
                    cmd1.Parameters.AddWithValue("@cdate", credate);
                    cmd1.Parameters.AddWithValue("@udate", update);
                    cmd1.Parameters.AddWithValue("@fupload", fromupload);
                    cmd1.CommandType = CommandType.Text;
                    cmd1.ExecuteNonQuery();
                }
                catch (System.Data.SqlClient.SqlException ex)
                {
                    string msg = "Insert/Update Error:";
                    msg += ex.Message;
                    throw new Exception(msg);
                }
                finally
                {
                    connection.Close();
                }
            }
        }
        else
        {
            string script = "alert(\"The data already exists\");";
            ScriptManager.RegisterStartupScript(this, GetType(), "ServerControlScript", script, true);
        }
}
上传按钮

 protected void btnUpload_Click(object sender, EventArgs e)
{
    if (FileUpload1.HasFile)
    {
        try
        {
            string path = Path.GetFileName(FileUpload1.FileName);
            path = path.Replace(" ", "");
            FileUpload1.SaveAs(Server.MapPath("~/Datas/") + path);
            String ExcelPath = Server.MapPath("~/Datas/") + path;
            OleDbConnection mycon = new OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " + ExcelPath + "; Extended Properties=Excel 8.0; Persist Security Info = False");
            mycon.Open();
            OleDbCommand cmdX = new OleDbCommand("select * from [Sheet1$]", mycon);
            OleDbDataReader dr = cmdX.ExecuteReader();
            while (dr.Read())
            {
                delegateName = dr[0].ToString();
                rankPos = dr[1].ToString();
                company = dr[2].ToString();
                courseTitle = dr[3].ToString();
                trainingCenter = dr[4].ToString();
                instructor = dr[5].ToString();
                staDa = DateTime.Parse(dr[6].ToString());
                string startDate = staDa.ToString("MM/dd/yyyy");
                endDa = DateTime.Parse(dr[7].ToString());
                string endDate = endDa.ToString("MM/dd/yyyy");
                certIssued = dr[8].ToString();
                certNum = dr[9].ToString();
                remarks = dr[10].ToString();
                recDeleted = 0;
                dateCreated = DateTime.Now.ToString("MM/dd/yyyy HH:mm");
                dateUpdated = string.Empty;
                fromUpload = 1;
                AddNewTrainee(delegateName, rankPos, company, courseTitle, trainingCenter, instructor, 
                    startDate, endDate, certIssued, certNum, remarks, recDeleted, dateCreated, dateUpdated, fromUpload);
            }
        }
        catch (Exception ex)
        {
            string errorMessage = "alert(\"ERROR: " + ex.Message.ToString() + " \");";
            ScriptManager.RegisterStartupScript(this, GetType(), "ServerControlScript", errorMessage, true);
        }
    }
    else
    {
        string errorMessage = "alert(\"ERROR: You have not specified a file \");";
        ScriptManager.RegisterStartupScript(this, GetType(), "ServerControlScript", errorMessage, true);
    }
    PopulateData();
}

您必须将transferMode设置为“Streamed”,否则您将始终获得一个文件


看看这篇文章:

我认为要达到最终目标,你需要解决一些问题

  • 使用multiselect方法和获取所需所有文件的发布列表 用于上传
  • 您的处理要求是否符合要求
  • 处理完成后,根据需要提交或回滚事务,并保留所需的数据
  • 研究一下我发布的链接。起初,交易似乎有点势不可挡,但实际上非常简单。也许我可以帮你开始理解。实际上只有三个额外的步骤

    一,。 创建命令后初始化事务对象

    SqlTransaction transaction = connection.BeginTransaction();
    
    二,。 在所有Sql命令(插入、更新、删除等)上附加事务

    cmd.Transaction = transaction;
    
    这将允许您执行SqlCommands,而无需实际将它们放入数据库中。最后,当您处理完所有插入和更新后,您可以执行最后一步。using语句不是必需的,只是良好的实践。这可能是你想了解的下一件事,它非常有帮助

    三,。 将所有SqlCommands提交到数据库

    transaction.Commit();
    
    如果在数据处理过程中的任何时候,出现了一些错误,您可以像这样回滚每个事务

    transaction.Rollback();
    

    我是asp.net的初学者,所以我对语法不太熟悉。我很抱歉,好的,谢谢!我会尝试这个方法,但这是否能直接解决我的问题?它仍然会根据上传的行的顺序上传一些文件。我的意思是,如果文件的第一行已经存在,那么它将在一开始就停止事务,但是如果唯一存在的数据是最后一行,那么除了最后一行之外,它已经通过的所有其他行都将被上传row@JMVillaflores对不起,我没有意识到这是你要求的一部分。该事务适用于全有或全无的情况。在调用AddNewTrainee之前,只添加另一个函数CheckForTrainee以查看它是否存在,这样是否可以接受?如果它已经存在,你可以在上传中打破while循环,或者跳过它继续。是的,我想在调用AddNewTrainee之前先做一个检查,但我不知道在while循环中做什么。