загрузить файл Excel и обновить те же записи asp.net - PullRequest
0 голосов
/ 16 сентября 2018

Я работаю над проектом, в котором мне нужно загрузить файл excel в базу данных сервера SQL, а также обновить, если записи уже существуют, я реализовал код с помощью массового полицейского SQL, который вставляет файл Excel в файлТаблица БД, но я застрял, как обновить, если записи уже доступны.Я использую asp.net c # для этого, это мой код, помогите мне, а также укажите лучший способ загрузки файла excel в базу данных

      protected void btnUpload_Click(object sender, EventArgs e)
{
    try
    {
        int id;
        string contactPerson;
        string designation;
        string company;
        string contact;
        string emailaddress;
        string city;
        string region;
        string industry;
        string division;
        string mobile;
        string address;




        string path = Path.GetFileName(FileUpload1.FileName);
        path = path.Replace(" ", "");

        FileUpload1.SaveAs(Server.MapPath("~/uploadExcel/") + FileUpload1.FileName);
        String ExcelPath = Server.MapPath("~/uploadExcel/") + FileUpload1.FileName;
        OleDbConnection mycon = new OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " + ExcelPath + "; Extended Properties=Excel 8.0; Persist Security Info = False");

        //       OleDbConnection myconn =
        //new OleDbConnection( @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ExcelPath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1;';");


        mycon.Open();
        OleDbCommand cmd = new OleDbCommand("select * from [Sheet1$]", mycon);
        OleDbDataReader dr = cmd.ExecuteReader();
        while (dr.Read())
        {
            if (dr[0].ToString() != "")
            {
                // Response.Write("<br/>"+dr[0].ToString());
                id = Convert.ToInt32(dr[0].ToString());
                contactPerson = dr[1].ToString();
                designation = dr[2].ToString();
                company = dr[3].ToString();
                emailaddress = dr[4].ToString();
                contact = dr[5].ToString();
                mobile = dr[6].ToString();
                address = dr[7].ToString();
                city = dr[8].ToString();
                region = dr[9].ToString();
                industry = dr[10].ToString();
                division = dr[11].ToString();


               UpdateDatabase(id, contactPerson, designation, company, emailaddress, contact, 
                mobile, address,city,region,industry,division);
            }
            else
            {
                break;
            }




        }
       lblmessage.Text = "Data Has Been Updated Successfully";
        mycon.Close();

        File.Delete(ExcelPath);
    }
    catch (Exception ex)
    {

        Console.WriteLine(ex.Message);
    }


}
//designation, company, emailaddress, contact, mobile, address,city,region,industry,division

private void UpdateDatabase(int id, String contactPerson, String designation, String company, String emailaddress, 
                             String contact, String mobile, String address,String city,String region,String industry,
                             String division)
{


    String query = "insert into Tbl_TempExcelData (id,contactperson,designation,company,email,contact,mobile,address,city,region,industry,division) values('" + id + "','" + contactPerson + "', '" + designation + "','" + company + "','" + emailaddress + "','" + contact + "','" + mobile + "','" + address + "','" + city + "','" + region + "','" + industry + "','" + division + "')";

    //String mycon = "Data Source=Ali-PC\\SQLEXPRESS; Initial Catalog=ExcelDatabase; Integrated Security=True";
    String mycon = "Data Source=Ali-PC;Initial Catalog=MushkhoApp;Integrated Security=True";
    SqlConnection con = new SqlConnection(mycon);
    con.Open();
    SqlCommand cmd = new SqlCommand();
    cmd.CommandText = query;
    cmd.Connection = con;
    cmd.ExecuteNonQuery();

}

1 Ответ

0 голосов
/ 16 сентября 2018

Создайте пользовательский тип на сервере sql со всеми клапанами, которые вы хотите вставить

how to add user defined table type

После этого пользовательский оператор объединения сервера Sql вставляет и обновляет запись в одном запросе.

Как использовать Sql Merge

в Sql Merge statment используйте пользовательскую переменную таблицы в качестве исходной таблицы, а таблицу, в которую вы хотите вставить, используйте ее в качестве целевой таблицы.

...