通过 Oledb c# 防止重复数据从 Excel 到 db

Posted

技术标签:

【中文标题】通过 Oledb c# 防止重复数据从 Excel 到 db【英文标题】:prevent duplicate data from Excel to db via Oledb c# 【发布时间】:2019-10-02 04:43:18 【问题描述】:

我有一个 excel,我想用一个按钮将其中的四列上传到 SQL 表。 问题是当我重复单击按钮时,所有数据都将被复制,但我不希望这样。我只想更新新数据。 我的查询:

protected void Button1_Click(object sender, EventArgs e)
    
        int UserID;
        int InsuID;
        string Result;
        int Year;

        //** مسیر فایل اکسل**
        String ExcelPath = @"D:\Insu_lab.xlsx";

        //** کانکشن به آفیس**
        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 cmd = new OleDbCommand("select * from [Sheet1$]", mycon);
        OleDbDataReader dr = cmd.ExecuteReader();

        while (dr.Read())
        

            UserID = Convert.ToInt32(dr[0].ToString());
            InsuID = Convert.ToInt32(dr[1].ToString());
            Result = dr[2].ToString();
            Year = Convert.ToInt32(dr[3].ToString());

            savedata(UserID, InsuID, Result, Year);
            Label1.Text = "اطلاعات با موفقیت در  دیتابیس ذخیره شد";

        
    

    private void savedata(int UserID, int InsuID, string Result, int Year)
    
        String query = "insert into tbl_Result(UserID,InsuID,Result,Year) values(" + UserID + ",'" + InsuID + "','" + Result + "','" + Year + "') ";
        String mycon = "Data Source=MC6082; Initial Catalog=Insurance; Integrated Security=true";
        SqlConnection con = new SqlConnection(mycon);
        con.Open();
        SqlCommand cmd = new SqlCommand();
        cmd.CommandText = query;
        cmd.Connection = con;
        cmd.ExecuteNonQuery();
    

【问题讨论】:

请让您的问题更清楚:您希望添加新数据还是更新文件同时更新现有数据。您可能缺少一些唯一键,可能是 userID 和 InsuID? 【参考方案1】:

解决方案 1:当您 clickedon button 时,(button) 禁用该按钮。

Button1.disable = true;

导出结束时:

Button1.disable = false;

解决方案2:这部分可以使用from jquery ajax。

【讨论】:

谢谢,您能介绍一下解决方案 2 吗?

以上是关于通过 Oledb c# 防止重复数据从 Excel 到 db的主要内容,如果未能解决你的问题,请参考以下文章

通过 C# 和 OleDb 在 Excel 电子表格中插入一行

C# OLEDB读取EXCEL的数据为空值

c#如何从根本上防止重复提交相同的数据

如何使用 oledb 在 c# 中将下拉列数据插入到 excel 中

c#通过oledb连接Oracle代码

从 C# 通过 OLEDB 执行更新时出错