2013-03-20 11 views
7

neden oluyor.OLEDbException, IErrorInfo.GetDescription neden bir Access veritabanı karşı bir OleDbConnection, OldDbCommand ve OleDbReader kullanıyorum E_FAIL (0x80004005)

Kodda aradığım veritabanında adlandırılmış bir sorgu var.

Sorgu erişimden yürütüldüğünde doğru şekilde çalışıyor.

Bazı kaynaklar, sorgundaki ayrılmış sözcükler kullanılarak ve parantez içine sarılarak hataya neden olabileceğini gösterir. Ayrılmış herhangi bir sözcük kullanmıyorum ve kurallara uymak için tüm sütun adlarını parantez içine sardım. Sorunun nerede olduğunu tespit edilmeye çalışılıyor

, ben Ole bağlantısı bir istisna değildir, basit bir

SELECT id FROM table1 WHERE id = 5 

sorgu kolaylaştırmıştır. Ben sorgunun bir sonraki bölümünü tanıştırdığımda

:

SELECT table1.id FROM table1 INNER JOIN storedQuery ON table1.id = storedQuery.id WHERE table1.id = 5" 

sonra istisna olsun. Ben sorgu Ayrılmış sözcükleri içermiyordu dediğinde

  • Message: IErrorInfo.GetDescription failed with E_FAIL(0x80004005).
  • ErrorCode: -2147467259
  • NativeError: -533136361
  • SQLState: 3000

cevap

9

görünüşe göre yanılmışım şu şekildedir:

istisna detaylar.

Kullandığım sorgu Access veritabanında başka bir sorgudan seçmekti. Diğer sorguda soruna neden olan ayrılmış bir anahtar kelime vardı. BTW

: Dosya senin yok/okuma yüklemeye çalışırken eğer

The Access database engine runs in different modes, depending on whether it is called from Access, data access objects, the Microsoft OLE Provider for the Access database engine, or the Microsoft Access ODBC driver. It can be run in either ANSI mode or non-ANSI (traditional) mode.

Because using these two modes results in two slightly different sets of reserved words, a query that uses a reserved word might work in one mode and fail in another mode

Access 2007 reserved words and symbols

Keith

+0

Out aşağıda hattını

SELECT id FROM table1 WHERE id = 5 

değiştirmelidir merak, sorguda ayrılmış anahtar kelime ne başarısız oldu? – DaveInCaz

+1

Hatırlamak için çok uzun yıllar. Benim için önemli olan, saklanan sorguları hangi yolla aradığınıza bağlı olarak farklı rezerv kelimeleri olduğunu bulmaktı. –

2

bu istisna bir diğer olası nedenidir.

Dosyanın yalnızca bu kodu "IErrorInfo.GetDescription E_FAIL ile başarısız oldu" özel durumunu doğru bir şekilde algıladığından emin olmak için dosyayı açmaya çalışmadan önce bir "File.Exists" gerçekleştirmeyi yararlı buldum. köşeli parantez çevrili olmalıdır

4

..and have wrapped all column names in brackets anyway to rule it out.

Sadece sütunlar isimleri Tablo adlarının da Örneğin, aşağıda hattı ile

SELECT [id] FROM [table1] WHERE [id] = 5 
İlgili konular