AndroidStudio通過jdbc訪問雲端MySQL數據庫

首先在androidstudio下導入  mysql-connector-java-5.1.8-bin.jar  的jar包

代碼:

MainActiviry.java

package com.example.xeonrnc.cloud;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        new Thread(new Runnable() {
            @Override
            public void run() {
                DBConnection.linkMysql();
            }
        }).start();

    }

}

DBConnection.java

package com.example.xeonrnc.cloud;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;


public class DBConnection {
    private static final String driver = "com.mysql.jdbc.Driver";
//    private static final String url = "jdbc:mysql://192.168.43.173:3306/test?useSSL=true&serverTimezone=GMT";
    private static final String url = "jdbc:mysql://雲端公網ip:3306/數據庫名稱";
    private static final String user = "root";
    private static final String pwd = "密碼";

    public static void linkMysql() {
        Connection conn=null;
        PreparedStatement stmt=null;
        try {
            Class.forName(driver).newInstance();
            System.out.println("驅動加載成功!!!!!");
        }
        catch (Exception e){
            e.printStackTrace();
        }
            try{
                conn = DriverManager.getConnection(url,user,pwd);
                System.out.println("連接數據庫成功!!!!!!");
                String sql = "select * from user";
                stmt= conn.prepareStatement(sql);
            ResultSet rs = stmt.executeQuery();

            while (rs.next()){
                String id=rs.getString("id");
                String name=rs.getString("name");
                String phone=rs.getString("phone");
                System.out.println(id+"\t"+name+"\t"+phone);
            }



        } catch (Exception e) {
            e.printStackTrace();
        }
        finally {
            if(conn!=null){
                try {
                    conn.close();
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }
    }
}

 

選擇下面的Run

我們發現報了個錯:

ERROR 1130: Host '112.96.34.130' is not allowed to connect to this MySQL server

解決辦法:

登錄服務器

mysql -u root -p

然後輸入隱藏的密碼

進入mysql模式後,mysql> use mysql;  (如果你正在使用的數據 庫名稱是AA ,那麼use AA)

然後 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'rootpasswd' WITH GRANT OPTION;

 

重新運行程序之後

有可能繼續報錯:

Access denied for user 'root'@'112.96.34.130' (using password: YES)

聽別人說是密碼錯了,但明明密碼是對的還是報錯了。只要改一改密碼就不會報錯了,可能是我的密碼使用了特殊符號

在雲端修改MySQL登錄密碼:

停止mysql:service mysql stop
終端輸入nano /etc/my.cnf
在[mysqld]的下一行添加skip-grant-tables

在這裏插入圖片描述

ctrl+x保存,按y保存,然後回車

重啓mysql:service mysql restart

輸入命令:mysql -u root -p

輸入密碼之後

mysql> use mysql;

mysql>update user set password=password(‘設置密碼’) where user=‘root’;

設置好密碼以後
更新權限:mysql>flush privileges;

鍵入exit,退出mysql
輸入命令:nano /etc/my.cnf
把skip-grant-tables刪掉
保存以後,重啓mysql:service mysql restart

 

再次運行程序之後

雲端MySQL數據庫:

是沒有問題的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章