NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Mezi 13:00 až cca 15:00 proběhne odstávka sítě z důvodu aktualizace. Web bude po celou dobu nedostupný.

Diskuze: Chyba při čtení z databáze access

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Dušan
Člen
Avatar
Dušan:18.12.2023 8:35

Prosím o radu. Načítám data z databáze access do proměnné typu string (pole). Kód se zastaví s chybou, pokud v databázi access není záznam, tzn. že v daném řádku je Empty. Příklad, access má 1000 záznamů. Na 67 řádku není hodnota uvedena, pole v tabulce je prázdné Jakmile kód na toto narazí - CAStabII(poci­tadlo) = reader.GetStrin­g(0), skončí s chybou a načítání už nepokračuje dál. Jde to prosím nějak ošetřit?

Ukázka kódu:

Dim queryString As String = "SELECT CAS FROM AnnexII ORDER BY Reference ASC"
Dim connection = New OleDbConnection(connectionString)
Dim command = New OleDbCommand(queryString, connection)
connection.Open()
Dim reader As OleDbDataReader = command.ExecuteReader()

Dim pocitadlo As Integer = 0
Dim CAStabII(10000)
Try
    While reader.Read
        CAStabII(pocitadlo) = reader.GetString(0)
        pocitadlo += 1
    End While

Catch When reader.GetString(0) = Nothing
    MsgBox("Záznam CAS nic neobsahuje")
Catch ex As Exception
    MsgBox("Záznam: " & pocitadlo & vbCrLf & CAStabII(pocitadlo))
End Try

reader.Close()
connection.Close()

Zkusil jsem: Googlil jsem kde co, zkoušel různé varianty, ale nic z toho nefungovalo.

 
Odpovědět
18.12.2023 8:35
Avatar
Dušan
Člen
Avatar
Dušan:18.12.2023 8:37

Děkuji

 
Nahoru Odpovědět
18.12.2023 8:37
Avatar
zelvicek
Člen
Avatar
Odpovídá na Dušan
zelvicek:19.12.2023 6:53

Ano, lze.

Řešení #1 - hloupé:
Toto řešení sis už sám silně nastínil - použít try/catch ve smyčce.

Řešení #2 - chytřejší:
Projít všechny methody třídy OleDbDataReader a trochu si o nich přečíst - zabere to cca 5 minut.

 
Nahoru Odpovědět
19.12.2023 6:53
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.