Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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í.

Diskuze: Implementace SQLite v Android Studiu v Javě

Aktivity
Avatar
Petr August
Člen
Avatar
Petr August:10.1.2022 0:17

Dobrý den, s dalšími dvěma lidmi pracuji v Android studiu na ročníkovém projektu, kde chceme využít SQLite databázi. Je to aplikace na výuku českého jazyka, takže databáze obsahuje autory, knihy, období atd... Každopádně jde o to, že jsme měli tři možnosti; buď použít NoSQL od Firebase, školní mySQL server který potřebuje ssh tunel nebo SQLite, která nepotřebuje server. Rozhodli jsme se pro SQLite, takže jsme si mohli vybrat buď z nativní knihovny SQLite, která je v Javě nebo externí knihovny sqlite-jdbc, která se musí importovat. Jelikož nativní knihovna ukládá a čte databázi z paměti zařízení a my chceme použít předvytvořenou databázi, tak zbylo použít externí knihovnu, kterou se mi nepodařilo zprovoznit, ačkoli je to pár řádků. Mohl by někdo poradit, co opravit nebo co jiného použít?

Děkuji

Zkusil jsem: `try {
Class.forName("or­g.sqlite.JDBC");
Connection conn = DriverManager­.getConnection("jdbc:sql­ite:databases­.db");
} catch (SQLException | ClassNotFoundEx­ception throwables) {
throwables.prin­tStackTrace();
}`

Chci docílit: Výjimku to vypisuje tuto (bez ohledu na to, jestli tam soubor database.db je nebo ne):
`W/System.err: java.sql.SQLEx­ception: opening db: 'database.db': Read-only file system
W/System.err: at org.sqlite.SQLi­teConnection.o­pen(SQLiteCon­nection.java:231)
at org.sqlite.SQLi­teConnection.<i­nit>(SQLiteCon­nection.java:61)
at org.sqlite.jdbc3­.JDBC3Connecti­on.<init>(JDBC3Con­nection.java:28)
at org.sqlite.jdbc4­.JDBC4Connecti­on.<init>(JDBC4Con­nection.java:21)
at org.sqlite.JDBC­.createConnec­tion(JDBC.java:115)
at org.sqlite.JDBC­.connect(JDBC­.java:90)
at java.sql.Driver­Manager.getCon­nection(Driver­Manager.java:580)
at java.sql.Driver­Manager.getCon­nection(Driver­Manager.java:236)
at com.example.my­application.da­tabase.Test.ma­in(Test.java:14)
at com.example.my­application.Ma­inActivity.on­Create(MainAc­tivity.java:23)
at android.app.Ac­tivity.perfor­mCreate(Activi­ty.java:7994)
at android.app.Ac­tivity.perfor­mCreate(Activi­ty.java:7978)
at android.app.In­strumentation­.callActivity­OnCreate(Instru­mentation.java:1309)
at android.app.Ac­tivityThread.per­formLaunchActi­vity(ActivityT­hread.java:3422)
at android.app.Ac­tivityThread.han­dleLaunchActi­vity(ActivityT­hread.java:3601)
at android.app.ser­vertransaction­.LaunchActivi­tyItem.execute(Lau­nchActivityItem­.java:85)
at android.app.ser­vertransaction­.TransactionE­xecutor.execu­teCallbacks(Tran­sactionExecutor­.java:135)
at android.app.ser­vertransaction­.TransactionE­xecutor.execu­te(Transactio­nExecutor.java:95)
at android.app.Ac­tivityThread$H­.handleMessage(Ac­tivityThread.ja­va:2066)
at android.os.Han­dler.dispatchMes­sage(Handler.ja­va:106)
W/System.err: at android.os.Lo­oper.loop(Loo­per.java:223)
at android.app.Ac­tivityThread.ma­in(ActivityThre­ad.java:7656)
at java.lang.reflec­t.Method.invo­ke(Native Method)
at com.android.in­ternal.os.Run­timeInit$Metho­dAndArgsCaller­.run(RuntimeI­nit.java:592)
at com.android.in­ternal.os.Zygo­teInit.main(Zy­goteInit.java:947)`

 
Odpovědět
10.1.2022 0:17
Avatar
Atrament
Tvůrce
Avatar
Atrament:10.1.2022 21:25

JDBC určitě ne, to se pokud vím snad na Androidu ani nepoužívá, spíš bych šel cestou použití SQLite API obsaženého přímo v Android SDK a úplně nejlépe za pomocí knihovny Room. O tom jak se Room používá se dočtete zde a o tom jak se používá s již vytvořenou databází zase zde

 
Nahoru Odpovědět
10.1.2022 21:25
Avatar
Odpovídá na Petr August
Matúš Olejník:11.1.2022 16:14

Presne ako píše Atrament , tiež ti neviem s týmto pomôcť nakoľko som jdbc v Androide nikdy nepoužil. Zhodou náhod som ale nedávno niekomu inému posielal ukážku Android aplikácie kde som použil aj Room aj možnosť naplniť si DB vstupnými dátami. Link na kód aj celý popis nájdeš v predposlednej správe tu https://www.itnetwork.cz/…1a7c24cdcbba

Nahoru Odpovědět
11.1.2022 16:14
/* I am not sure why this works but it fixes the problem */
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.