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)
|
|
|
Неопознанная ошибка соединения с бд
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
Вижал выдаёт неопознанную ошибку в данном коде:
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(); !!! выделено место ошибки. полный код тут
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 |
|
Там текст ошибки «Неопознанная ошибка» или что-то другой? |
Patrool |
|
Цитата coder @ 17.02.12, 12:30 Там текст ошибки «Неопознанная ошибка» или что-то другой? вот что пишет слеши вроде те |
kanes |
|
Слешы в connectionString не те. должны быть |
Patrool |
|
Цитата kanes @ 17.02.12, 18:38 Слешы в connectionString не те. должны быть Поменял, не помогло, ошибка та же |
NetVir |
|
Senior Member Рейтинг (т): 23 |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- .NET: Базы данных
- Следующая тема
[ 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 errorIn 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
-
Marked as answer by
-
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
-
Marked as answer by
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
в самописной конфигурации поле никак увеличить?
4 — 07.05.10 — 07:24
Насколько я помню, никак не обойти, переделывайте имена полей до 8-ми символов. И вообще отказывайтесь от ДБФ — для импорта экспорта у восьмерки есть xml
5 — 07.05.10 — 07:27
ДБФ-ку можно обрабатывать не в 1с первоначально. В том числе можно и на автомате настроить преобразование.
6 — 07.05.10 — 07:28
(4) я бы отказался, но эл.документы только в ДБФ приходят.
Или может как-то сделать что-бы в командной строке имя этого поля переименовать.
Чтобы в обработке 1с это выполнялось.
7 — 07.05.10 — 07:29
Экселем открывается? (0)
8 — 07.05.10 — 07:30
(7) да, открывается
9 — 07.05.10 — 07:36
ado попробовать
10 — 07.05.10 — 07:36
Почему не хочешь при загрузке в базу обрезать? Например Прав(Строка, КолСимв)
11 — 07.05.10 — 07:36
Вчера доделал загрузку данных из дбф, оказывается мне еще и повезло с длиной полей.
(0) ты как к XBASE-объекту обращаешься?
12 — 07.05.10 — 07:38
(11) вот таким образом:
Файл = Новый XBASE;
Файл.ОткрытьФайл(Диалог.ПолноеИмяФайла,,0);
Файл.Кодировка = КодировкаXBase.OEM;
13 — 07.05.10 — 07:39
(12) забей на Новый XBASE
кури ADODB
14 — 07.05.10 — 07:40
(12) четко, прям как у меня, даже кодировка DOS ))
Я думаю (9) и (13) правы в этом случае
(10) а к полю он как будет обращаться?
15 — 07.05.10 — 07:42
Нет маленького примерчика с ADODB?
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();
17 — 07.05.10 — 07:44
18 — 07.05.10 — 07:44
Прикол в том что ему главное наличие винды начиная с XP и старше, дрова для самих файлов не нужны.
19 — 07.05.10 — 07:46
(17) спасибо гуру, много полезного по ссылке!
20 — 07.05.10 — 07:47
21 — 07.05.10 — 07:47
Спасибо — сегодня попробую
Что и как получится — обязательно расскажу
22 — 07.05.10 — 07:48
(20) после этого должно обязательно получиться!!!
23 — 07.05.10 — 07:51
(21) [Что и как получится — обязательно расскажу]
это лишние
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?
25 — 07.05.10 — 13:54
можно ли программн проверить к какому типу относится открываемый файл?
26 — 07.05.10 — 14:03
(25) можно, например по хэдеру файла
или тупо обернуть Execute в Попытка и перебрать все типы dbf
27 — 07.05.10 — 14:32
(26) попробовать перебрать такие значения?
«;Extended Properties=DBASE IV»
«;Extended Properties=DBASE V»
«;Extended Properties=DBASE VI»
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.