Microsoft jet database engine неопознанная ошибка

I am getting the below exception while connecting to the Excel file using OLEDb connection.

Microsoft JET Database Engine Unspecified error at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection) at
System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection,
DbConnectionPoolGroup poolGroup) at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.OleDb.OleDbConnection.Open() at LessonsLearntCR.ExcelDlEvntResClass.<>c__DisplayClass4.b__1()

This error is happening very inconsistently. Some day it will work fine. Suddenly this error appears and it will be there for some time(may be a
day or more). If we do IIS reset, it will start working again

In many of the articles, it has been told that this is the common error we are getting if we are using Microsoft Jet OLEDb

Request you to provide some guidance to move ahead on this issue

I have checked permissions on various temp folders that JET supposedly uses, and permissions are fine.  The most frustrating thing is that it will work for several times in a row, and then start failing every time (until IISREST).

The piece of code I am using is below:

public DataSet ReadExcel(string filePath, string SqlCommand)
{
    using (OleDbConnection xcn = new OleDbConnection())
    {
        xcn.ConnectionString = «Provider=Microsoft.Jet.OLEDB.4.0;Data Source=»
            + filePath
            + «;Extended Properties=»Excel 8.0;IMEX=1″;pooling=false;»;
        xcn.Open();

        DataSet data = new DataSet();
        using (OleDbDataAdapter da = new OleDbDataAdapter(SqlCommand, SqlCommand))
        {
            da.Fill(data);
        }
        return data;
    }
}

  • Перемещено

    25 августа 2010 г. 7:21
    (From:Visual C# General)

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    >
    Неопознанная ошибка соединения с бд

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,
    17.02.12, 11:46

      Вижал выдаёт неопознанную ошибку в данном коде:

      ExpandedWrap disabled

            string sql = «SELECT * FROM WORDS»;

                    string connectionString;

                    connectionString = «Provider=Microsoft.Jet.OLEDB.4.0;» +

                @»Data Source= D:/бд/english.mdb»;

                    OleDbConnection connection = new OleDbConnection(connectionString);

                   !!! connection.Open();!!!

                    OleDbCommand command = new OleDbCommand(sql, connection);

                    OleDbDataReader dataReader = command.ExecuteReader();

      !!! выделено место ошибки.

      полный код тут

      ExpandedWrap disabled

        using System;

        using System.Collections.Generic;

        using System.ComponentModel;

        using System.Data;

        using System.Drawing;

        using System.Linq;

        using System.Text;

        using System.Windows.Forms;

        using System.Data.OleDb;

        namespace Diplom

        {

            public partial class Form1 : Form

            {

                public Form1()

                {

                    InitializeComponent();

                     dbacces.acces();

                }

            }

            public class dbacces

            {

                public static void acces()

                {

                    //список для английских слов

                    List<string> englw = new List<string>();

                    // Формируем запрос к базе данных —

                    // считываем английские слова

                    string sql = «SELECT * FROM WORDS»;

                    string connectionString;

                    connectionString = «Provider=Microsoft.Jet.OLEDB.4.0;» +

                @»Data Source= D:/бд/english.mdb»;

                    OleDbConnection connection = new OleDbConnection(connectionString);

                    connection.Open();

                    OleDbCommand command = new OleDbCommand(sql, connection);

                    OleDbDataReader dataReader = command.ExecuteReader();

                    // Организуем циклический перебор полученных записей

                    // Заносим слова в список

                    while (dataReader.Read())

                    {

                        englw.Add(dataReader[«Englwords»].ToString());

                    }

                   Form1 Sform1 = new Form1();

                   Sform1.button1.Text = englw[1];

                    // Очистка

                    dataReader.Close();

                    connection.Close();

                }

            }

        }

      В чём проблема? по-мимо кривых рук конечно=)


      coder



      Сообщ.
      #2

      ,
      17.02.12, 12:30

        Там текст ошибки «Неопознанная ошибка» или что-то другой?
        Можеть быть в задании пути файла неправильный слэш (\) поставили?


        Patrool



        Сообщ.
        #3

        ,
        17.02.12, 14:24

          Цитата coder @ 17.02.12, 12:30

          Там текст ошибки «Неопознанная ошибка» или что-то другой?
          Можеть быть в задании пути файла неправильный слэш (\) поставили?

          вот что пишет
          «System.Data.OleDb.OleDbException не обработано
          Message=Неопознанная ошибка
          Source=Microsoft JET Database Engine
          ErrorCode=-2147467259″

          слеши вроде те


          kanes



          Сообщ.
          #4

          ,
          17.02.12, 18:38

            Слешы в connectionString не те. должны быть


            Patrool



            Сообщ.
            #5

            ,
            17.02.12, 19:34

              Цитата kanes @ 17.02.12, 18:38

              Слешы в connectionString не те. должны быть

              Поменял, не помогло, ошибка та же


              NetVir



              Сообщ.
              #6

              ,
              27.02.12, 14:47

                Senior Member

                ****

                Рейтинг (т): 23

                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                0 пользователей:

                • Предыдущая тема
                • .NET: Базы данных
                • Следующая тема

                Рейтинг@Mail.ru

                [ Script execution time: 0,0259 ]   [ 16 queries used ]   [ Generated: 21.06.23, 23:22 GMT ]  

                • Remove From My Forums
                • Question

                • User189888063 posted

                  Hai all,

                       Im a new comer to this community.I searched lots of bulletins n forums and tried all those steps,but could not find a solution to my problem.

                  All usually working before well, but accidentally crashed by undetermined
                  reason:

                  Databases connections databases stop working under all web sites on web server.

                  I’ve given all permissions.

                  Affect only IIS applications.

                  if trying to open MS Access 2000 databases:

                  Microsoft JET Database Engine error ‘80004005’
                  Unspecified error

                  In connection string, while try to work with MS Access db:
                  Set XXX = Server.CreateObject («ADODB.Connection»)
                  XXX.ConnectionString = «Provider=Microsoft.Jet.OLEDB.4.0;Data Source=XXXXX»
                  XXX.CursorLocation = 3 // could be vary
                  XXX.CommandTimeout = 60
                  XXX.Open <— ERROR HERE
                  This is a very urgent issue for me to proceed in my project.

                  Help me please.

                  thanks

                  Ramya

                Answers

                  • Marked as answer by

                    Tuesday, September 28, 2021 12:00 AM

                • User189888063 posted

                  Hai Jeff and steve,

                     Thanks for all ur support in getting my problem resolved. Finally, i got it resolved. As i told before it was becos of something i changed in authentication settings of IIS. Now, after enabling basic authentication and disabling all other authentications,
                  i got evrythng working as before.

                  Thanks again for ur kind support

                  Cheers

                  Ramya

                  • Marked as answer by
                    Anonymous
                    Tuesday, September 28, 2021 12:00 AM

                   SergeiK

                07.05.10 — 07:21

                Сделал экспорт эл. накладной в самописную конфигурацию из файла ДБФ. Но одно из полей в этом файле имеет имя более 8 символов, и 1с выкидывает ошибку… Можно ли это каким-нибудь образом обойти?

                Спасибо

                   Ювелир

                1 — 07.05.10 — 07:23

                А заранее файл обработать нельзя?

                   Ювелир

                2 — 07.05.10 — 07:24

                имя поля скорректировать и вуаля!

                   МаленькийВопросик

                3 — 07.05.10 — 07:24

                в самописной конфигурации поле никак увеличить?

                   sda553

                4 — 07.05.10 — 07:24

                Насколько я помню, никак не обойти, переделывайте имена полей до 8-ми символов. И вообще отказывайтесь от ДБФ — для импорта экспорта у восьмерки есть xml

                   Ювелир

                5 — 07.05.10 — 07:27

                ДБФ-ку можно обрабатывать не в 1с первоначально. В том числе можно и на автомате настроить преобразование.

                   SergeiK

                6 — 07.05.10 — 07:28

                (4) я бы отказался, но эл.документы только в ДБФ приходят.

                Или может как-то сделать что-бы в командной строке имя этого поля переименовать.

                Чтобы в обработке 1с это выполнялось.

                   xoma1c

                7 — 07.05.10 — 07:29

                Экселем открывается? (0)

                   SergeiK

                8 — 07.05.10 — 07:30

                (7) да, открывается

                   dk

                9 — 07.05.10 — 07:36

                ado попробовать

                   Jofa

                10 — 07.05.10 — 07:36

                Почему не хочешь при загрузке в базу обрезать? Например Прав(Строка, КолСимв)

                   Alpinist22

                11 — 07.05.10 — 07:36

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

                (0) ты как к XBASE-объекту обращаешься?

                   SergeiK

                12 — 07.05.10 — 07:38

                (11) вот таким образом:

                       Файл = Новый XBASE;

                       Файл.ОткрытьФайл(Диалог.ПолноеИмяФайла,,0);

                       Файл.Кодировка = КодировкаXBase.OEM;

                   shuhard

                13 — 07.05.10 — 07:39

                (12) забей на Новый XBASE
                кури ADODB

                   Alpinist22

                14 — 07.05.10 — 07:40

                (12) четко, прям как у меня, даже кодировка DOS ))

                Я думаю (9) и (13) правы в этом случае

                (10) а к полю он как будет обращаться?

                   SergeiK

                15 — 07.05.10 — 07:42

                Нет маленького примерчика с ADODB?

                   Alpinist22

                16 — 07.05.10 — 07:43

                Судя по тому как ADO позволяет работать с XLS-доками, может быть и для DBF это прокатит, вот пример:

                MyCon=Новый COMОбъект ("ADODB.Connection");
                    MyCon.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ПутьКФайлу+";Extended Properties=""Excel 8.0;HDR=No;IMEX=1""");
                    MyRst=Новый COMОбъект ("ADODB.Recordset");
                    MyStr="select * from [Лист1$]";
                    MyRst.Open (MyStr, MyCon, 2, 3)//adOpenDynamic, adLockOptimistic 
                 
                    Пока НЕ MyRst.EOF() Цикл
                ...
                MyRst.MoveNext();
                    КонецЦикла;
                    MyRst.Close();
                    MyCon.Close();
                   dk

                17 — 07.05.10 — 07:44

                   Alpinist22

                18 — 07.05.10 — 07:44

                Прикол в том что ему главное наличие винды начиная с XP и старше, дрова для самих файлов не нужны.

                   Alpinist22

                19 — 07.05.10 — 07:46

                (17) спасибо гуру, много полезного по ссылке!

                   shuhard

                20 — 07.05.10 — 07:47

                   SergeiK

                21 — 07.05.10 — 07:47

                Спасибо — сегодня попробую

                Что и как получится — обязательно расскажу

                   SergeiK

                22 — 07.05.10 — 07:48

                (20) после этого должно обязательно получиться!!!

                   shuhard

                23 — 07.05.10 — 07:51

                (21) [Что и как получится — обязательно расскажу]
                это лишние

                   SergeiK

                24 — 07.05.10 — 13:25

                Имеем следующий код:

                   Path=»c:»;

                   DBConn = Новый COMОбъект(«ADODB.Connection»);

                   DBConn.Open(«Provider=Microsoft.Jet.OLEDB.4.0;Data Source=»+Path+»;Extended Properties=DBASE IV»);

                   
                   Persons = DBConn.Execute(«SELECT * FROM [736582.DBF]»);

                При обработке вылетает ошибка:

                Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft JET Database Engine): Неопознанная ошибка

                   Persons = DBConn.Execute(«SELECT * FROM [736582.DBF]»);

                Такой файл существует, и обрабатыается и с помощью кода XBASE обрабатывается без ошибок…

                В тоже вермя с помощью ADODB другой файл обрабатывается без ошибок.

                В чем может быть проблема, Может в версиях DBASE?

                   SergeiK

                25 — 07.05.10 — 13:54

                можно ли программн проверить к какому типу относится открываемый файл?

                   shuhard

                26 — 07.05.10 — 14:03

                (25) можно, например по хэдеру файла
                или тупо обернуть Execute в Попытка и перебрать все типы dbf

                   SergeiK

                27 — 07.05.10 — 14:32

                (26) попробовать перебрать такие значения?

                «;Extended Properties=DBASE IV»

                «;Extended Properties=DBASE V»

                «;Extended Properties=DBASE VI»

                   dk

                28 — 07.05.10 — 14:57

                  

                shuhard

                29 — 07.05.10 — 15:06

                (27) не верю, нет в природе BASE VI

                Какая-то непонятность с ним возникает.

                Вот есть у меня основная форма, на форме размещен JanusGrid. В форме есть такой код:

                Код: Выделить всё
                ...
                  Set cmd = New ADODB.Command
                  cmd.CommandType = adCmdStoredProc
                  cmd.CommandText = "qCardData_GetByID"
                  cmd.Parameters.Append cmd.CreateParameter("varCardID", adInteger, adParamInput, , ID)
                  Set cmd.ActiveConnection = objConnection
                  Set rs = New ADODB.Recordset
                  rs.CursorLocation = adUseServer
                  rs.CursorType = adOpenKeyset
                  rs.LockType = adLockReadOnly
                  rs.Open cmd
                  Set cmd = Nothing
                  grdCardData.HoldFields
                  grdCardData.HoldSortSettings = True
                  Set grdCardData.ADORecordset = rs
                ...

                Код работает, грид отображает данные.

                Есть другая форма, открываемая из основной. В ней тоже есть грид и используется такой код:

                Код: Выделить всё
                Private Sub RefreshGrid()
                Dim rs As ADODB.Recordset, cmd As ADODB.Command
                If varCardID = 0 Then
                  grdDetails.HoldFields
                  grdDetails.HoldSortSettings = True
                  Set grdDetails.ADORecordset = Nothing
                Else
                  Set cmd = New ADODB.Command
                  cmd.CommandType = adCmdStoredProc
                  cmd.CommandText = "qCardData_GetByID"
                  cmd.Parameters.Append cmd.CreateParameter("varCardID", adInteger, adParamInput, , varCardID)
                  Set cmd.ActiveConnection = objConnection
                  Set rs = New ADODB.Recordset
                  rs.CursorLocation = adUseClient
                  rs.CursorType = adOpenKeyset
                  rs.LockType = adLockReadOnly
                  rs.Open cmd
                  Set cmd = Nothing
                  Set rs.ActiveConnection = Nothing
                  grdDetails.HoldFields
                  grdDetails.HoldSortSettings = True
                  Set grdDetails.ADORecordset = rs
                  grdDetails.LoadEntireRecordset
                  Set rs = Nothing
                End If
                RefreshTotals
                End Sub

                Этот код тоже работает и отображает данные.

                Глюк тут в следующем.

                После того, как я из основной формы открыл вспомогательную, код в основной форме выдает ошибку:

                Код ошибки: -2147467259 ( 0x80004005 ) , 0 ( 0x00000000 )
                Неопознанная ошибка
                Источник ошибки: Microsoft JET Database Engine
                Состояние SQL: 3219

                Код ошибки: -2147467259 ( 0x80004005 ) , -85919008 ( 0xFAE0FAE0 )
                Недопустимая операция.
                Источник ошибки: Microsoft JET Database Engine
                Состояние SQL: 3219

                Код ошибки: -2147467259 ( 0x80004005 ) , -85919008 ( 0xFAE0FAE0 )
                Недопустимая операция.
                Источник ошибки: Microsoft JET Database Engine
                Состояние SQL: 3219

                Причем, эта ошибка постоянная, т.е. после перезапуска программы она не исчезает.

                Она исчезает только если этот параметрический запрос выполнить в Access.

                После запуска запроса из Access код из основной формы снова работает, до тех пор, пока не вызовется вспомогательная форма.

                В чем собака зарыта?

                Виноват наверняка ЯнусГрид, но не пойму, что ему не нравится.

                Lasciate ogni speranza, voi ch’entrate.

              • Microsoft games for windows live ошибка подключения windows 10
              • Microsoft net framework ошибка 0x800c006 windows 7
              • Microsoft flight simulator ошибка подключения к серверу
              • Microsoft net framework ошибка 0x800c0005
              • Microsoft flight simulator ошибка пакета установщика windows