如何从web服务器访问sqlite数据库并在codenameone中使用web服务插入记录

如何从web服务器访问sqlite数据库并在codenameone中使用web服务插入记录,codenameone,Codenameone,我正在CN1中开发一个与数据库有关的应用程序,我希望用户输入为他们生成的pin。用户输入有效pin后,应用程序将被激活以供使用。我现在面临的问题是如何使用Web服务访问数据库。我已经学习了webservices向导教程,但所有的努力都是徒劳的。 这是我的代码片段 private static final String DESTINATION_URL = "http://localhost:8085/CBT_PINS/folder/PINS.db"; ConnectionReque

我正在CN1中开发一个与数据库有关的应用程序,我希望用户输入为他们生成的pin。用户输入有效pin后,应用程序将被激活以供使用。我现在面临的问题是如何使用Web服务访问数据库。我已经学习了webservices向导教程,但所有的努力都是徒劳的。 这是我的代码片段

  private static final String DESTINATION_URL = "http://localhost:8085/CBT_PINS/folder/PINS.db";    

 ConnectionRequest req = new ConnectionRequest(DESTINATION_URL) {
 @Override
 protected void handleException(Exception err) {
 Log.e(err);
 Display.getInstance().callSerially(() -> {
 ToastBar.showErrorMessage("An error occured while connecting to the server: " + err);
  });
  }

@Override
protected void handleErrorResponseCode(int code, String message) {
Display.getInstance().callSerially(() -> {
ToastBar.showErrorMessage("Error code from the server: " + code + "\n" + message);
});
}

};
req.setPost(false);
NetworkManager.getInstance().addToQueueAndWait(req);  

请帮帮我。我不知道下一步该怎么办。谢谢你的回复,CN1的作者。这是下面的完整代码。我在本地机器上使用tomcat服务器在模拟器上进行测试。我非常确定,如果它在本地机器的服务器上对我有效,它肯定会在web服务器上有效

private static final String DESTINATION_URL = "http://localhost:8085/CBT_PINS/folder/PINS.db";    

 ConnectionRequest req = new ConnectionRequest(DESTINATION_URL) {
 @Override

Database  myDataBase = com.codename1.db.Database.openOrCreate(DESTINATION_URL);
   Cursor c = myDataBase.executeQuery("select pin from PIN_TABLE where id =  1" );

     if (c.next()) {
        Row r = c.getRow();

         String pin = r.getString(0);

    Dialog.show("valid pin", pin, "Ok", "Ok");

    } else if    (!c.next()) {
        Dialog.show("Invalid pin", "keep off", "ok", "ok");      


                }


 protected void handleException(Exception err) {
 Log.e(err);
 Display.getInstance().callSerially(() -> {
ToastBar.showErrorMessage("An error occured while connecting to the server: " + err);
 });
}

@Override
protected void handleErrorResponseCode(int code, String message) {
Display.getInstance().callSerially(() -> {
ToastBar.showErrorMessage("Error code from the server: " + code + "\n" +   message);
});
}

};
req.setPost(false);
NetworkManager.getInstance().addToQueueAndWait(req);  
这是运行代码时为我生成的错误代码:

WARNING: Apple will no longer accept http URL connections from applications you tried to connect to http://localhost:8085/CBT_PINS/folder/PINS.db to learn more check out https://www.codenameone.com/blog/ios-http-urls.html
java.sql.SQLException: path to 'C:\Users\EMMY_OLUWASEGUN\.cn1/database/http://localhost:8085/CBT_PINS/folder/PINS.db': 'C:\Users\EMMY_OLUWASEGUN\.cn1\database\http:' does not exist
[Network Thread] 0:0:0,0 - Codename One revisions: 375ed2c938445450f0983f0d18235f61e793a7ee2004

[Network Thread] 0:0:0,0 - Exception: java.io.IOException - path to 'C:\Users\EMMY_OLUWASEGUN\.cn1/database/http://localhost:8085/CBT_PINS/folder/PINS.db': 'C:\Users\EMMY_OLUWASEGUN\.cn1\database\http:' does not exist
Rendering frame took too long 187 milliseconds
at org.sqlite.SQLiteConnection.open(SQLiteConnection.java:156)
at org.sqlite.SQLiteConnection.<init>(SQLiteConnection.java:105)
at org.sqlite.JDBC.createConnection(JDBC.java:113)
at org.sqlite.JDBC.connect(JDBC.java:87)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:270)
at com.codename1.impl.javase.JavaSEPort.openOrCreateDB(JavaSEPort.java:7548)
at com.codename1.ui.Display.openOrCreate(Display.java:3690)
at com.codename1.db.Database.openOrCreate(Database.java:59)
at com.mycompany.myapp.MyApplication$1.readResponse(MyApplication.java:283)
at com.codename1.io.ConnectionRequest.performOperation(ConnectionRequest.java:483)
at com.codename1.io.NetworkManager$NetworkThread.run(NetworkManager.java:282)
at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
java.io.IOException: path to 'C:\Users\EMMY_OLUWASEGUN\.cn1/database/http://localhost:8085/CBT_PINS/folder/PINS.db': 'C:\Users\EMMY_OLUWASEGUN\.cn1\database\http:' does not exist
at com.codename1.impl.javase.JavaSEPort.openOrCreateDB(JavaSEPort.java:7554)
at com.codename1.ui.Display.openOrCreate(Display.java:3690)
at com.codename1.db.Database.openOrCreate(Database.java:59)
at com.mycompany.myapp.MyApplication$1.readResponse(MyApplication.java:283)
at com.codename1.io.ConnectionRequest.performOperation(ConnectionRequest.java:483)
at com.codename1.io.NetworkManager$NetworkThread.run(NetworkManager.java:282)
at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
警告:苹果将不再接受来自您试图连接到的应用程序的http URL连接http://localhost:8085/CBT_PINS/folder/PINS.db 要了解更多信息,请查看https://www.codenameone.com/blog/ios-http-urls.html
java.sql.SQLException:C:\Users\EMMY\u OLUWASEGUN\.cn1/数据库的路径/http://localhost:8085/CBT_PINS/folder/PINS.db“:'C:\Users\EMMY\u OLUWASEGUN\.cn1\database\http:'不存在。”
[网络线程]0:0:0,0-代号一修订版:375ed2c938445450f0983f0d18235f61e793a7ee2004
[网络线程]0:0:0,0-异常:java.io.IOException-指向“C:\Users\EMMY\u OLUWASEGUN\.cn1/数据库”的路径/http://localhost:8085/CBT_PINS/folder/PINS.db“:'C:\Users\EMMY\u OLUWASEGUN\.cn1\database\http:'不存在。”
渲染帧花费的时间过长187毫秒
在org.sqlite.SQLiteConnection.open上(SQLiteConnection.java:156)
位于org.sqlite.SQLiteConnection(SQLiteConnection.java:105)
位于org.sqlite.JDBC.createConnection(JDBC.java:113)
位于org.sqlite.JDBC.connect(JDBC.java:87)
位于java.sql.DriverManager.getConnection(DriverManager.java:664)
位于java.sql.DriverManager.getConnection(DriverManager.java:270)
位于com.codename1.impl.javase.JavaSEPort.openOrCreateDB(JavaSEPort.java:7548)
位于com.codename1.ui.Display.openOrCreate(Display.java:3690)
位于com.codename1.db.Database.openOrCreate(Database.java:59)
在com.mycompany.myapp.MyApplication$1.readResponse(MyApplication.java:283)
位于com.codename1.io.ConnectionRequest.performOperation(ConnectionRequest.java:483)
位于com.codename1.io.NetworkManager$NetworkThread.run(NetworkManager.java:282)
位于com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
java.io.IOException:C:\Users\EMMY\u OLUWASEGUN\.cn1/数据库的路径/http://localhost:8085/CBT_PINS/folder/PINS.db“:'C:\Users\EMMY\u OLUWASEGUN\.cn1\database\http:'不存在。”
位于com.codename1.impl.javase.JavaSEPort.openOrCreateDB(JavaSEPort.java:7554)
位于com.codename1.ui.Display.openOrCreate(Display.java:3690)
位于com.codename1.db.Database.openOrCreate(Database.java:59)
在com.mycompany.myapp.MyApplication$1.readResponse(MyApplication.java:283)
位于com.codename1.io.ConnectionRequest.performOperation(ConnectionRequest.java:483)
位于com.codename1.io.NetworkManager$NetworkThread.run(NetworkManager.java:282)
位于com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)

感谢您的回复,CN1的作者。这是下面的完整代码。我在本地机器上使用tomcat服务器在模拟器上进行测试。我非常确定,如果它在本地机器的服务器上对我有效,它肯定会在web服务器上有效

private static final String DESTINATION_URL = "http://localhost:8085/CBT_PINS/folder/PINS.db";    

 ConnectionRequest req = new ConnectionRequest(DESTINATION_URL) {
 @Override

Database  myDataBase = com.codename1.db.Database.openOrCreate(DESTINATION_URL);
   Cursor c = myDataBase.executeQuery("select pin from PIN_TABLE where id =  1" );

     if (c.next()) {
        Row r = c.getRow();

         String pin = r.getString(0);

    Dialog.show("valid pin", pin, "Ok", "Ok");

    } else if    (!c.next()) {
        Dialog.show("Invalid pin", "keep off", "ok", "ok");      


                }


 protected void handleException(Exception err) {
 Log.e(err);
 Display.getInstance().callSerially(() -> {
ToastBar.showErrorMessage("An error occured while connecting to the server: " + err);
 });
}

@Override
protected void handleErrorResponseCode(int code, String message) {
Display.getInstance().callSerially(() -> {
ToastBar.showErrorMessage("Error code from the server: " + code + "\n" +   message);
});
}

};
req.setPost(false);
NetworkManager.getInstance().addToQueueAndWait(req);  
这是运行代码时为我生成的错误代码:

WARNING: Apple will no longer accept http URL connections from applications you tried to connect to http://localhost:8085/CBT_PINS/folder/PINS.db to learn more check out https://www.codenameone.com/blog/ios-http-urls.html
java.sql.SQLException: path to 'C:\Users\EMMY_OLUWASEGUN\.cn1/database/http://localhost:8085/CBT_PINS/folder/PINS.db': 'C:\Users\EMMY_OLUWASEGUN\.cn1\database\http:' does not exist
[Network Thread] 0:0:0,0 - Codename One revisions: 375ed2c938445450f0983f0d18235f61e793a7ee2004

[Network Thread] 0:0:0,0 - Exception: java.io.IOException - path to 'C:\Users\EMMY_OLUWASEGUN\.cn1/database/http://localhost:8085/CBT_PINS/folder/PINS.db': 'C:\Users\EMMY_OLUWASEGUN\.cn1\database\http:' does not exist
Rendering frame took too long 187 milliseconds
at org.sqlite.SQLiteConnection.open(SQLiteConnection.java:156)
at org.sqlite.SQLiteConnection.<init>(SQLiteConnection.java:105)
at org.sqlite.JDBC.createConnection(JDBC.java:113)
at org.sqlite.JDBC.connect(JDBC.java:87)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:270)
at com.codename1.impl.javase.JavaSEPort.openOrCreateDB(JavaSEPort.java:7548)
at com.codename1.ui.Display.openOrCreate(Display.java:3690)
at com.codename1.db.Database.openOrCreate(Database.java:59)
at com.mycompany.myapp.MyApplication$1.readResponse(MyApplication.java:283)
at com.codename1.io.ConnectionRequest.performOperation(ConnectionRequest.java:483)
at com.codename1.io.NetworkManager$NetworkThread.run(NetworkManager.java:282)
at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
java.io.IOException: path to 'C:\Users\EMMY_OLUWASEGUN\.cn1/database/http://localhost:8085/CBT_PINS/folder/PINS.db': 'C:\Users\EMMY_OLUWASEGUN\.cn1\database\http:' does not exist
at com.codename1.impl.javase.JavaSEPort.openOrCreateDB(JavaSEPort.java:7554)
at com.codename1.ui.Display.openOrCreate(Display.java:3690)
at com.codename1.db.Database.openOrCreate(Database.java:59)
at com.mycompany.myapp.MyApplication$1.readResponse(MyApplication.java:283)
at com.codename1.io.ConnectionRequest.performOperation(ConnectionRequest.java:483)
at com.codename1.io.NetworkManager$NetworkThread.run(NetworkManager.java:282)
at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
警告:苹果将不再接受来自您试图连接到的应用程序的http URL连接http://localhost:8085/CBT_PINS/folder/PINS.db 要了解更多信息,请查看https://www.codenameone.com/blog/ios-http-urls.html
java.sql.SQLException:C:\Users\EMMY\u OLUWASEGUN\.cn1/数据库的路径/http://localhost:8085/CBT_PINS/folder/PINS.db“:'C:\Users\EMMY\u OLUWASEGUN\.cn1\database\http:'不存在。”
[网络线程]0:0:0,0-代号一修订版:375ed2c938445450f0983f0d18235f61e793a7ee2004
[网络线程]0:0:0,0-异常:java.io.IOException-指向“C:\Users\EMMY\u OLUWASEGUN\.cn1/数据库”的路径/http://localhost:8085/CBT_PINS/folder/PINS.db“:'C:\Users\EMMY\u OLUWASEGUN\.cn1\database\http:'不存在。”
渲染帧花费的时间过长187毫秒
在org.sqlite.SQLiteConnection.open上(SQLiteConnection.java:156)
位于org.sqlite.SQLiteConnection(SQLiteConnection.java:105)
位于org.sqlite.JDBC.createConnection(JDBC.java:113)
位于org.sqlite.JDBC.connect(JDBC.java:87)
位于java.sql.DriverManager.getConnection(DriverManager.java:664)
位于java.sql.DriverManager.getConnection(DriverManager.java:270)
位于com.codename1.impl.javase.JavaSEPort.openOrCreateDB(JavaSEPort.java:7548)
位于com.codename1.ui.Display.openOrCreate(Display.java:3690)
位于com.codename1.db.Database.openOrCreate(Database.java:59)
在com.mycompany.myapp.MyApplication$1.readResponse(MyApplication.java:283)
位于com.codename1.io.ConnectionRequest.performOperation(ConnectionRequest.java:483)
位于com.codename1.io.NetworkManager$NetworkThread.run(NetworkManager.java:282)
位于com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
java.io.IOException:C:\Users\EMMY\u OLUWASEGUN\.cn1/数据库的路径/http://localhost:8085/CBT_PINS/folder/PINS.db“:'C:\Users\EMMY\u OLUWASEGUN\.cn1\database\http:'不存在。”
位于com.codename1.impl.javase.JavaSEPort.openOrCreateDB(JavaSEPort.java:7554)
位于com.codename1.ui.Display.openOrCreate(Display.java:3690)
位于com.codename1.db.Database.openOrCreate(Database.java:59)
在com.mycompany.myapp.MyApplication$1.readResponse(MyApplication.java:283)
位于com.codename1.io.ConnectionRequest.performOperation(ConnectionRequest.java:483)
位于com.codename1.io.NetworkManager$NetworkThread.run(NetworkManager.java:282)
位于com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)

这是因为您没有访问Web服务。您正在尝试使用http URL打开数据库:

SQLException:指向“C:\Users\EMMY\u OLUWASEGUN.cn1/database/”的路径

触发