首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接到MySQL时正则表达式中的语法错误

问连接到MySQL时正则表达式中的语法错误
EN

Stack Overflow用户
提问于 2020-06-24 19:45:32
回答 1查看 182关注 0票数 0

我正在尝试连接到我的MySQL服务器,但我收到错误,我不知道为什么。

下面是我使用的方法:

代码语言:javascript
复制
public ListeID lireBdd() { //retourne une liste contenant tous les id de la bdd
    IdEnvoyes listebdd = new IdEnvoyes();
    try {
        Class.forName("com.mysql.cj.jdbc.Driver"); 

        String url = "jdbc:mysql://dontconnecttomyserverpls/freecovid"; 
        String user = "root";
        String passwd = "root";

        Connection conn = DriverManager.getConnection(url, user, passwd);

        //Création d'un objet Statement
        Statement state = conn.createStatement();
        //L'objet ResultSet contient le résultat de la requête SQL
        ResultSet result = state.executeQuery("SELECT * FROM freecovid.idMalades");
        //On récupère les MetaData
        ResultSetMetaData resultMeta = result.getMetaData();

        while(result.next()){
            for(int i = 0; i <= resultMeta.getColumnCount(); i++) {
                listebdd.addId((Integer) result.getObject(i));
            }
        }

        result.close();
        state.close();

    } catch (Exception e) {
        e.printStackTrace();
    }
    return listebdd;
}

我得到了这些错误

代码语言:javascript
复制
06-24 11:35:59.176 4360-4360/com.iutlan.freecovid E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.iutlan.freecovid, PID: 4360
java.lang.ExceptionInInitializerError
    at com.mysql.cj.conf.ConnectionUrl.acceptsUrl(ConnectionUrl.java:317)
    at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:185)
    at java.sql.DriverManager.getConnection(DriverManager.java:179)
    at java.sql.DriverManager.getConnection(DriverManager.java:213)
    at com.iutlan.freecovid.ConnexionBdd.lireBdd(ConnexionBdd.java:22)
    at com.iutlan.freecovid.MainActivity.testbdd(MainActivity.java:69)
    at com.iutlan.freecovid.MainActivity.onCreate(MainActivity.java:56)
    at android.app.Activity.performCreate(Activity.java:5990)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
    at android.app.ActivityThread.access$800(ActivityThread.java:151)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5254)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
 Caused by: java.util.regex.PatternSyntaxException: Syntax error in regexp pattern near index 4:
(?<scheme>[\w\+:%]+)\s*(?://(?<authority>[^/?#]*))?\s*(?:/(?!\s*/)(?<path>[^?#]*))?(?:\?(?!\s*\?)(?<query>[^#]*))?(?:\s*#(?<fragment>.*))?
    ^
    at java.util.regex.Pattern.compileImpl(Native Method)
    at java.util.regex.Pattern.compile(Pattern.java:411)
    at java.util.regex.Pattern.<init>(Pattern.java:394)
    at java.util.regex.Pattern.compile(Pattern.java:381)
    at com.mysql.cj.conf.ConnectionUrlParser.<clinit>(ConnectionUrlParser.java:89)
        ... 20 more

06-24 11:40:59.588 4360-4360/?I/Process:发送信号。PID: 4360 SIG: 9

你知道我会犯什么错误吗?

EN

回答 1

Stack Overflow用户

发布于 2020-06-25 01:28:44

问题是,Java /J驱动程序正在使用正则表达式功能(命名组),该功能由MySQL中的正则表达式实现支持,但不受Android的正则表达式实现支持。

换句话说,Android连接器/J驱动程序与MySQL不兼容。您可以通过降级到MySQL连接器/J的早期版本(例如5.1.x而不是8.0.x)来修复此问题。

但是,您根本不应该使用Android的JDBC驱动程序。从移动设备直接连接到远程数据库服务器(如MySQL )的性能通常很差,而且不是很安全。最好引入一个(Java) the服务来协调应用程序和数据库之间的关系。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62554300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档