1. 程式人生 > >Android開發之MySQL操作

Android開發之MySQL操作

如果想遠端連線 mysql,需要記住:mysql 允許被遠端訪問。

1. 啟動 MySql

sudo /etc/init.d/mysql.server start

mysql -u root -p

2. 增加一個使用者

use mysql(mysql 是自帶的資料庫檔案,裡面有張表 user)

執行下面的兩條命令:


解釋:

grant all privileges on  *.*  to  'mark'  @'%'  identified  by  '123456';

授予使用者 mark,密碼 123456,可以使用任意 ip (%)訪問任何資料庫(*.*) .

查看錶中資料:


可以看出 mark 這個使用者建立了。

password 是被加密了的。host 為 % 表示通配任意 ip(ipv4)。

 3. 命令列驗證

ctrl + c 停止 mysql 互動模式

ifconfig 檢視本機的 ip:192.168.1.102

mysql -h 192.168.1.102 -umark -p123456

如果進入互動模式,就 ok.

新建一個數據庫檔案 mydb 和表 mytable:

    

4. jdbc

eclipse --- New Java project

    

注意:

要將 jdbc(connector-java-5.1.6-bin.jar 版本) 的 jar 檔案 Build path 到這個專案。

MySqlUtil.java

[java] view plain copy print?
  1. package net.mark.util;  
  2. import java.sql.Connection;  
  3. import java.sql.DriverManager;  
  4. import java.sql.ResultSet;  
  5. import java.sql.SQLException;  
  6. import java.sql.Statement;  
  7. publicclass MySqlUtil {  
  8.     publicstatic Connection openConnection(String url, String user,  
  9.             String password) {  
  10.         Connection conn = null;  
  11.         try {  
  12.             final String DRIVER_NAME = "com.mysql.jdbc.Driver";  
  13.             Class.forName(DRIVER_NAME);  
  14.             conn = DriverManager.getConnection(url, user, password);  
  15.         } catch (ClassNotFoundException e) {  
  16.             conn = null;  
  17.         } catch (SQLException e) {  
  18.             conn = null;  
  19.         }  
  20.         return conn;  
  21.     }  
  22.     publicstaticvoid query(Connection conn, String sql) {  
  23.         if (conn == null) {  
  24.             return;  
  25.         }  
  26.         Statement statement = null;  
  27.         ResultSet result = null;  
  28.         try {  
  29.             statement = conn.createStatement();  
  30.             result = statement.executeQuery(sql);  
  31.             if (result != null && result.first()) {  
  32.                 int idColumnIndex = result.findColumn("id");  
  33.                 int nameColumnIndex = result.findColumn("name");  
  34.                 while (!result.isAfterLast()) {  
  35.                     System.out.println("------------------");  
  36.                     System.out.print("id " + result.getString(idColumnIndex) + "\t");  
  37.                     System.out  
  38.                             .println("name " + result.getString(nameColumnIndex));  
  39.                     result.next();  
  40.                 }  
  41.             }  
  42.         } catch (SQLException e) {  
  43.             e.printStackTrace();  
  44.         } finally {  
  45.             try {  
  46.                 if (result != null) {  
  47.                     result.close();  
  48.                     result = null;  
  49.                 }  
  50.                 if (statement != null) {  
  51.                     statement.close();  
  52.                     statement = null;  
  53.                 }  
  54.             } catch (SQLException sqle) {  
  55.             }  
  56.         }  
  57.     }  
  58.     publicstaticboolean execSQL(Connection conn, String sql) {  
  59.         boolean execResult = false;  
  60.         if (conn == null) {  
  61.             return execResult;  
  62.         }  
  63.         Statement statement = null;  
  64.         try {  
  65.             statement = conn.createStatement();  
  66.             if (statement != null) {  
  67.                 execResult = statement.execute(sql);  
  68.             }  
  69.         } catch (SQLException e) {  
  70.             execResult = false;  
  71.         }  
  72.         return execResult;  
  73.     }  
  74. }  

Main.java

[java] view plain copy print?
  1. package net.mark;  
  2. import java.sql.Connection;  
  3. import net.mark.util.MySqlUtil;  
  4. publicclass Main {  
  5.     privatestaticfinal String URL = "jdbc:mysql://192.168.1.102/mydb";  
  6.     privatestaticfinal String USER = "mark";  
  7.     privatestaticfinal String PASSWORD = "123456";  
  8.     publicstaticvoid main(String[] args) throws Exception {  
  9.         Connection conn = MySqlUtil.openConnection(URL, USER, PASSWORD);  
  10.         System.out.println("All users info:");  
  11.         MySqlUtil.query(conn, "select * from mytable");  
  12.     }  
  13. }  

Run as java application:

    

還可以插入、刪除或者更新資料:

[java] view plain copy print?
  1. package net.mark;  
  2. import java.sql.Connection;  
  3. import net.mark.util.MySqlUtil;  
  4. publicclass Main {  
  5.     privatestaticfinal String URL = "jdbc:mysql://192.168.1.102/mydb";  
  6.     privatestaticfinal String USER = "mark";  
  7.     privatestaticfinal String PASSWORD = "123456";  
  8.     publicstaticvoid main(String[] args) throws Exception {  
  9.         Connection conn = MySqlUtil.openConnection(URL, USER, PASSWORD);  
  10.         System.out.println("All users info:");  
  11.         MySqlUtil.execSQL(conn, "insert into mytable values(56,'小李')");  
  12.         MySqlUtil.execSQL(conn, "update mytable set name='mark' where id=1");  
  13.         MySqlUtil.execSQL(conn, "delete from mytable where id=6");  
  14.         MySqlUtil.query(conn, "select * from mytable");  
  15.     }  


上面的訪問是基於區域網通過 jdbc 操作 mysql。

遠端訪問 mysql,採用上面的方式也是可以的,但是速度不是很快。