简体   繁体   English

具有JDBC的Gluon示例项目在iOS设备上不起作用

[英]Gluon Sample Project with JDBC doesn't work on iOS Device

i have simple code with Gluon + JDBC. 我有Gluon + JDBC的简单代码。 I can connect this code on Android Device but not on Ipad. 我可以在Android设备上连接此代码,但不能在Ipad上连接。

my build.gradle; 我的build.gradle;

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'org.javafxports:jfxmobile-plugin:1.0.6'
    }
}

apply plugin: 'org.javafxports.jfxmobile'

repositories {
    jcenter()
}
dependencies {
    compile 'mysql:mysql-connector-java:5.0.2'
    iosRuntime 'mysql:mysql-connector-java:5.0.2'
}

mainClassName = 'com.mtt8.version15'

jfxmobile {
    android {
        manifest = 'src/android/AndroidManifest.xml'
        packagingOptions {
            exclude 'META-INF/INDEX.LIST'
        }

        ios {
            infoPList = file('src/ios/Default-Info.plist')
            forceLinkClasses = ['com.mtt8.**.*', 'com.mysql.**.*']
        }
    }
}

and here is JavaCode: 这是JavaCode:

private static final String serverIP="192.168.3.188";
    private static final String DB_DRIVER = "com.mysql.jdbc.Driver";
    private static final String DB_CONNECTION = "jdbc:mysql://192.168.3.188:3306/kasse_sql?useUnicode=true&characterEncoding=UTF-8";
    private static final String DB_USER = "root";
    private static final String DB_PASSWORD = "MYPASSWORD";

    public static Connection connection = null;
    public static Statement statement = null;
    public static String SQL = null;

    public static PreparedStatement pst = null;


    public static Connection getDBConnection(){

        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        try {
            //connection = DriverManager.getConnection(DB_CONNECTION, DB_USER, DB_PASSWORD);
            connection = DriverManager.getConnection("jdbc:mysql://192.168.3.188:3306/kasse_sql?user=root&password=MYPASSWORD&useUnicode=true&characterEncoding=UTF-8");
            msg.setText("Connection is OK");
            return  connection;
        } catch (SQLException e) {
            e.printStackTrace();
            msg.setText("Dont Connection");
        }

        return connection;
    }

As i say, this code working with Android but not on my Ipad. 如我所说,此代码可用于Android,但不能在我的Ipad上使用。

I get following errors after ./gradlew launchIOSDevice ./gradlew launchIOSDevice出现以下错误

java.sql.SQLException: Unsupported character encoding 'Cp1252'
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
    at com.mysql.jdbc.Buffer.readString(Buffer.java:430)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2823)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:812)
    at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3269)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1182)
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2644)
    at com.mysql.jdbc.Connection.<init>(Connection.java:1531)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
    at java.sql.DriverManager.getConnection(DriverManager.java:179)
    at java.sql.DriverManager.getConnection(DriverManager.java:144)
    at com.mtt8.version15.getDBConnection(version15.java:58)
    at com.mtt8.version15.start(version15.java:32)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863)
    at com.sun.javafx.application.LauncherImpl$$Lambda$9.run(Unknown Source)
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326)
    at com.sun.javafx.application.PlatformImpl$$Lambda$7.run(Unknown Source)
    at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295)
    at com.sun.javafx.application.PlatformImpl$$Lambda$19.run(Unknown Source)
    at java.security.AccessController.doPrivileged(AccessController.java:52)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294)
    at com.sun.javafx.application.PlatformImpl$$Lambda$6.run(Unknown Source)
    at org.robovm.apple.uikit.UIApplication.main(Native Method)
    at org.robovm.apple.uikit.UIApplication.main(UIApplication.java:384)
    at org.javafxports.jfxmobile.ios.BasicLauncher.main(BasicLauncher.java:115)
IOSWindowSystemInterface : setSwapInterval unimp
setSwapInterval(1)
ES2ResourceFactory: Prism - createStockShader: FillPgram_Color.frag
ES2ResourceFactory: Prism - createStockShader: Texture_Color.frag
ES2ResourceFactory: Prism - createStockShader: Solid_TextureRGB.frag
IOSWindowSystemInterface : setSwapInterval unimp
setSwapInterval(0)

i have tried with diffently connection strings but result is same. 我尝试了不同的连接字符串,但结果是相同的。

Can anybody please say me why my code dont working on Ipad? 谁能告诉我为什么我的代码无法在Ipad上运行?

thanks erkan kaplan 谢谢erkan kaplan

It seems there's a change in the encoding used in the connector. 似乎连接器中使用的编码有所变化。

This is the latest version that works for me on iOS: 这是适用于iOS的最新版本:

dependencies {
    compile 'mysql:mysql-connector-java:3.1.12'
}

For newer versions (3.1.13+), I find the same exception you see: 对于较新的版本(3.1.13+),我发现了与您看到的相同的异常:

java.sql.SQLException: Unsupported character encoding 'Cp1252'.
at com.mysql.jdbc.StringUtils.getBytes(StringUtils.java)

Finally, there is a typo on your build.gradle file: 最后,您的build.gradle文件上有一个错字:

jfxmobile {
    android {
        manifest = 'src/android/AndroidManifest.xml'
        packagingOptions {
            exclude 'META-INF/INDEX.LIST'
        }
        // typo!! iOS should be outside android!
        ios {
            infoPList = file('src/ios/Default-Info.plist')
            forceLinkClasses = ['com.mtt8.**.*', 'com.mysql.**.*']
        }
    }

} }

Make sure this is how you set your options: 确保这是您设置选项的方式:

jfxmobile {
    android {
        manifest = 'src/android/AndroidManifest.xml'
        packagingOptions {
            exclude 'META-INF/INDEX.LIST'
        }
    }

    ios {
        forceLinkClasses = [ 'com.gluonhq.**.*', 'com.mysql.**.*']
        infoPList = file('src/ios/Default-Info.plist')
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM