簡體   English   中英

Problem connect Android Studio-MySQL using JDBC (Error: java.sql.SQLNonTransientConnectionException: Could not create connection to database server.)

[英]Problem connect Android Studio-MySQL using JDBC (Error : java.sql.SQLNonTransientConnectionException: Could not create connection to database server.)

我想在 android studio 和 MySql 之間建立一個連接。

MySQL 版本 = MySQL 工作台 8.0 CE

MySQL 連接器版本 = mysql-connector-java-8.0.23.jar

我的數據庫名稱 = testandroid

我已經將連接器添加到我的項目中

我收到錯誤:java.sql.SQLNonTransientConnectionException:無法創建與數據庫服務器的連接。

代碼:

private Connection getConnection(){
        Connection con;
        try{
            Class.forName("com.mysql.cj.jdbc.Driver").newInstance();
            con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/testandroid?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=GMT","root","");
            return con;
        }catch (Exception e){
            System.out.println("Error ************************"+e);
            return null;
        }
    }


    private ArrayList<User> getUserList()
    {
        ArrayList<User> userList = new ArrayList<>();
        Connection connection = getConnection();


        String query = "Select pseudo FROM `users` where userID="+1;
        Statement st;
        ResultSet rs;

        try{
            st =  connection.createStatement();
            rs = st.executeQuery(query);
            User user ;
            while (rs.next())
            {
                user = new User(rs.getString("pseudo"));
                userList.add(user);
            }

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

        return userList;
    }


    private void showData(){

        ArrayList<User> list = getUserList();

        for (int i=0; i<list.size(); i++){

            test.setText(list.get(i).getPseudo());
            test.setText("fnpvrpogn");

        }

    }

錯誤

I/System.out: Error ************************java.sql.SQLNonTransientConnectionException: Could not create connection to database server.
W/System.err: java.lang.NullPointerException: Attempt to invoke interface method 'java.sql.Statement java.sql.Connection.createStatement()' on a null object reference
        at com.example.testjdbc.MainActivity.getUserList(MainActivity.java:54)
W/System.err:     at com.example.testjdbc.MainActivity.showData(MainActivity.java:73)
W/System.err:     at com.example.testjdbc.MainActivity.onCreate(MainActivity.java:24)
        at android.app.Activity.performCreate(Activity.java:7136)
W/System.err:     at android.app.Activity.performCreate(Activity.java:7127)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

對於在 Android 設備或仿真器上運行的軟件, localhostAndroid 設備或仿真器。 很可能,您的 MySQL 實例未在您的 Android 設備或仿真器上運行。

如果您在 Android 設備上運行您的應用程序,則需要使用運行 MySQL 的機器的 IP 地址或主機名。

如果您在模擬器上運行應用程序,並且 MySQL 與模擬器在同一台計算機上運行,請使用10.0.2.2作為地址而不是localhost


另外,請注意,從可靠性和安全性的角度來看,JDBC 不是為在移動設備上使用而設計的。 請考慮做其他事情,例如讓您的應用程序與 Web 服務對話,該服務反過來與數據庫對話。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM