首先在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數據庫:
是沒有問題的