myDataBase = com.codename1.db.Database.openOrCreate("MyDB")Log.p("DB Path:" +myDataBase.getDatabasePath("MyDB"));
[EDT] 0:0:0,0 - DB Path:/home/btofel/.cn1/database/MyDB
04-25 11:13:27.815: I/System.out(19255): [EDT] 0:0:0,0 - DB Path:/data/data/net.company.appname/databases/MyDB
String p = Display.getInstance().getDatabasePath("MyDB");
if(!p.startsWith("file:")) {
p = "file:/" + p;
}
if(!FileSystemStorage.getInstance().exists(p)) {
OutputStream o = FileSystemStorage.getInstance().openOutputStream(p);
InputStream i = Display.getInstance().getResourceAsStream("/dbName");
Util.copy(o, i);
Util.cleanup(o);
Util.cleanup(i);
}
now open DB as usual
String path = Display.getInstance().getDatabasePath(DB_NAME);
Log.p("path:" +path);
// if(!path.startsWith("file:")) {
// path = "file:/" + path;
// }
// path = FileSystemStorage.getInstance().getRoots()[0] + path;
if(!FileSystemStorage.getInstance().exists(path)) {
OutputStream o = FileSystemStorage.getInstance().openOutputStream(path);
InputStream i = Display.getInstance().getResourceAsStream(getClass(), "/"+DB_NAME);
Util.copy(i, o);
Util.cleanup(o);
Util.cleanup(i);
}
myDataBase = com.codename1.db.Database.openOrCreate(DB_NAME);
Log.p("DB Path:" +myDataBase.getDatabasePath(DB_NAME)); if(!FileSystemStorage.getInstance().exists(path)) {String path = Display.getInstance().getDatabasePath(DB_NAME);04-25 13:24:19.457: I/System.out(2887): [EDT] 0:0:0,0 - path:null
04-25 13:24:19.457: W/System.err(2887): java.lang.NullPointerException
04-25 13:24:19.457: W/System.err(2887): at java.io.File.fixSlashes(File.java:185)
04-25 13:24:19.457: W/System.err(2887): at java.io.File.<init>(File.java:134)
04-25 13:24:19.457: W/System.err(2887): at com.codename1.impl.android.AndroidImplementation.exists(AndroidImplementation.java:3373)
04-25 13:24:19.457: W/System.err(2887): at com.codename1.io.FileSystemStorage.exists(FileSystemStorage.java:180)
04-25 13:24:19.457: W/System.err(2887): at userclasses.DataBaseHelper.openDataBase(DataBaseHelper.java:157)java.lang.NullPointerException
at com.codename1.io.Util.copy(Util.java:113)
at com.codename1.io.Util.copy(Util.java:99)
at userclasses.StateMachine.getDb(StateMachine.java:108)
at userclasses.StateMachine.initListModelSqlData(StateMachine.java:73)
at generated.StateMachineBase.setListModel(StateMachineBase.java:296)
public class StateMachine extends StateMachineBase {
private Database myDataBase;
private String DB_NAME = "My_DB.sqlite";
@Override
protected boolean initListModelSqlData(List cmp) {
Database d = getDb();
if(d != null) {
try {
Cursor c = d.executeQuery("select title, description from _penalcode");
Vector entries = new Vector();
while (c.next()) {
Row r = c.getRow();
String title = r.getString(0);
String desc = r.getString(1);
Hashtable value = new Hashtable();
value.put("Line1", title);
value.put("Line2", desc);
entries.addElement(value);
cmp.setModel(new DefaultListModel(entries));
}
} catch (IOException ex) {
Log.e(ex);
}
}
return true;
}
private Database getDb() {
try {
Database myDataBase = com.codename1.db.Database.openOrCreate(DB_NAME);
if(Storage.getInstance().readObject("initalized") == null){
myDataBase.close();
String path = com.codename1.db.Database.getDatabasePath(DB_NAME);
OutputStream o = FileSystemStorage.getInstance().openOutputStream(path);
InputStream i = Display.getInstance().getResourceAsStream(getClass(), "/" + DB_NAME);
Util.copy(i, o);
Util.cleanup(o);
Util.cleanup(i);
myDataBase = com.codename1.db.Database.openOrCreate(DB_NAME);
Storage.getInstance().writeObject("initalized", "true");
}
} catch (IOException ex) {
Log.e(ex);
}
return myDataBase;
}
java.lang.NullPointerException
at com.codename1.io.Util.copy(Util.java:113)
at com.codename1.io.Util.copy(Util.java:99)
at userclasses.StateMachine.getDb(StateMachine.java:108)
at userclasses.StateMachine.initListModelSqlData(StateMachine.java:73)
at generated.StateMachineBase.setListModel(StateMachineBase.java:296)
at com.codename1.ui.util.UIBuilder.createComponent(UIBuilder.java:1422)
at com.codename1.ui.util.UIBuilder.createComponent(UIBuilder.java:1363)
at com.codename1.ui.util.UIBuilder.createContainer(UIBuilder.java:409)
at com.codename1.ui.util.UIBuilder.createContainer(UIBuilder.java:394)
at com.codename1.ui.util.UIBuilder.showForm(UIBuilder.java:2439)
at generated.StateMachineBase.startApp(StateMachineBase.java:58)
at generated.StateMachineBase.<init>(StateMachineBase.java:31)
at generated.StateMachineBase.<init>(StateMachineBase.java:102)
at userclasses.StateMachine.<init>(StateMachine.java:39)
at com.agpcom.storedata.StoreData.start(StoreData.java:20)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.codename1.impl.javase.Executor$1.run(Executor.java:95)
at com.codename1.ui.Display.processSerialCalls(Display.java:1051)
at com.codename1.ui.Display.mainEDTLoop(Display.java:871)
at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:119)
at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.codename1.impl.javase.Executor$1.run(Executor.java:95)
at com.codename1.ui.Display.processSerialCalls(Display.java:1051)
at com.codename1.ui.Display.mainEDTLoop(Display.java:871)
at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:119)
at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
Caused by: java.lang.NullPointerException
at com.codename1.ui.util.UIBuilder.showForm(UIBuilder.java:2342)
at com.codename1.ui.util.UIBuilder.showForm(UIBuilder.java:2440)
at generated.StateMachineBase.startApp(StateMachineBase.java:58)
at generated.StateMachineBase.<init>(StateMachineBase.java:31)
at generated.StateMachineBase.<init>(StateMachineBase.java:102)
at userclasses.StateMachine.<init>(StateMachine.java:39)
at com.agpcom.storedata.StoreData.start(StoreData.java:20)
... 9 more
public static void copy(InputStream i, OutputStream o, int bufferSize) throws IOException {
try {
byte[] buffer = new byte[bufferSize];
int size = i.read(buffer);
InputStream i = Display.getInstance().getResourceAsStream(getClass(), "/" + DB_NAME);
--To view this discussion on the web visit https://groups.google.com/d/msgid/codenameone-discussions/86284f8f-d248-4314-a8c5-bc87b3da6e48%40googlegroups.com.
You received this message because you are subscribed to the Google Groups "CodenameOne Discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email to codenameone-discu...@googlegroups.com.
Visit this group at http://groups.google.com/group/codenameone-discussions.
An alternative you might want to consider. I developed a data access library that allows you to include an SQL file that will automatically be loaded at first run.It supports versioning so that you can include incremental SQL updates corresponding to your app updates.Steve
On Wed, Jul 16, 2014 at 10:41 AM, Cristian Ionitoiu <cioni...@gmail.com> wrote:
Hi Shai,
What software do you recommend for creation of these files? I have used mozilla extension for sqlite to create/export/import file, which also loaded up without any problem by the binary taken from
https://www.sqlite.org/download.html.Thanks,
Cristian
On Wednesday, July 16, 2014 6:09:14 PM UTC+3, Shai Almog wrote:Hi,
if the file is 0kb you didn't create it correctly.
--
You received this message because you are subscribed to the Google Groups "CodenameOne Discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email to codenameone-discussions+unsub...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/codenameone-discussions/86284f8f-d248-4314-a8c5-bc87b3da6e48%40googlegroups.com.