SnvMohan Ответов: 1

Компонент Microsoft Access database engine не может открыть или записать файл ". Он уже открыт исключительно другим пользователем, или вам нужно разрешение на просмотр и запись его данных.


Я установил Microsoft AccessDatabaseEngine 2010. после этого я ничего не делаю...потому что я ничего не знаю о соединении oledb...... Затем я выполняю нижеприведенный файл, а затем получаю следующую ошибку... Компонент Microsoft Access database engine не может открыть или записать файл ". Он уже открыт исключительно другим пользователем, или вам нужно разрешение на просмотр и запись его данных... ..... Как я могу это решить?.. Кто-нибудь, помогите мне, пожалуйста...Если какие-либо шаги связаны с подключением oledb, то покажите эти шаги, пожалуйста ..........

файл ASPX :
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="UploadExcel_to_DB.aspx.cs" Inherits="UploadExcel_to_DB" %>

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server">
    <p>
        <br />
    </p>
<div>
<table>
<tr>
<td>
<span style="color: Red">*</span>Attach Excel file
</td>
<td>
<asp:FileUpload ID="fileuploadExcel" runat="server" />
</td>
</tr>
<tr>
<td></td>
<td>
<asp:Button ID="btnSend" runat="server" Text="Export" onclick="btnSend_Click"  />
</td>
</tr>
</table>
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" CellPadding="4"

        ForeColor="#333333" GridLines="None" PageSize="30">
    <AlternatingRowStyle BackColor="White" />
    <EditRowStyle BackColor="#2461BF" />
    <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
    <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
    <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
    <RowStyle BackColor="#EFF3FB" />
    <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
    <SortedAscendingCellStyle BackColor="#F5F7FB" />
    <SortedAscendingHeaderStyle BackColor="#6D95E1" />
    <SortedDescendingCellStyle BackColor="#E9EBEF" />
    <SortedDescendingHeaderStyle BackColor="#4870BE" />
</asp:GridView>
</div>
    <p>
    </p>
    <p>
    </p>
    <p>
    </p>
</asp:Content>

Aspx-файл.файл CS :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.OleDb;
using System.Data.SqlClient;

public partial class UploadExcel_to_DB : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btnSend_Click(object sender, EventArgs e)
    {
        String strConnection = "Data Source=(local);Initial Catalog=MyDB;Integrated Security=True";
        //file upload path
        string path = fileuploadExcel.PostedFile.FileName;
        //Create connection string to Excel work book
        string excelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;Persist Security Info=False";
        //Create Connection to Excel work book
        OleDbConnection excelConnection = new OleDbConnection(excelConnectionString);
        //Create OleDbCommand to fetch data from Excel
        OleDbCommand cmd = new OleDbCommand("Select [Business_ Name],[Category] from [Sheet1$]", excelConnection);
        excelConnection.Open();
        OleDbDataReader dReader;
        dReader = cmd.ExecuteReader();
        SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection);
        //Give your Destination table name
        sqlBulk.DestinationTableName = "exportcheckTB";
        sqlBulk.WriteToServer(dReader);
        excelConnection.Close();
    }
}

Веб.файл config :
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->

<configuration>
  <connectionstrings>
    <add name="ApplicationServices">
         connectionString="data source=Data Source=(local);Initial Catalog=MyDB;Integrated Security=True"
         providerName="System.Data.SqlClient" /&gt;
  </add></connectionstrings>

  <system.web>
    <compilation debug="true" targetframework="4.0" />

    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login.aspx" timeout="2880" />
    </authentication>

    <membership>
      <providers>
        <clear />
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionstringname="ApplicationServices">
             enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
             maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
             applicationName="/" />
      </add></providers>
    </membership>

    <profile>
      <providers>
        <clear />
        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionstringname="ApplicationServices" applicationname="/" />
      </providers>
    </profile>

    <rolemanager enabled="false">
      <providers>
        <clear />
        <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionstringname="ApplicationServices" applicationname="/" />
        <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationname="/" />
      </providers>
    </rolemanager>

  </system.web>

  <system.webserver>
     <modules runallmanagedmodulesforallrequests="true" />
  </system.webserver>
</configuration>

ZurdoDev

Ошибка говорит вам, что происходит. Кто-то открыл файл.

1 Ответов

Рейтинг:
2

OriginalGriff

Для вашего же блага прекратите использовать базы данных access в многопользовательских средах. Вместо этого попробуйте использовать SQL server или MySql - они предназначены для многопользовательской работы таким образом, что доступ к файлам совершенно определенно невозможен.

Когда вы используете файлы доступа непосредственно на веб - сайте, вы рискуете, что любой другой пользователь может попытаться изменить файл одновременно-и в результате вы получите ошибку. В вашем коде это еще хуже, потому что вы вообще не избавляетесь от соединения с файлом доступа, поэтому он будет оставаться открытым до тех пор, пока не будет запущен сборщик мусора или сеанс не истечет, в зависимости от того, что наступит раньше.


SnvMohan

Здравствуйте, сэр, я использую SQL server только для базы данных.... Мне нужно экспортировать значения excel в таблицу базы данных....... Как я могу это сделать?..

Maciej Los

Совершенно верно!
+5