工控網首頁
>

應用設計

>

安卓系統的遠程數據庫MySql操作

安卓系統的遠程數據庫MySql操作

2018/8/15 10:07:08

開發系統:Android4.4.2 開發平臺:廣州微嵌安卓工業平板 開發工具:eclipse 開發語言:Java 使用的數據庫:MySql 在日常的開發安卓程序中,很多時候都涉及到大量的數據管理,雖然安卓系統有自帶的數據庫sqlite,但sqlite是輕量級的,有時候滿足不了使用的需求,這時候就需要連接遠程的數據庫進行對數據的管理,下面我們就來學習下在安卓上是如何連接遠程數據庫使用的,本次所使用的遠程數據庫是MySql,安裝在電腦上面,通過網絡連接MySql服務器,從而可以遠程操作數據庫。

在數據庫操作中使用的一個類Connection:連接表示從Java應用程序到數據庫的鏈接 1、添加數據庫的驅動:在安卓上連接遠程數據庫需要先加載數據庫驅動,不同的數據庫的加載略有不同,這里以MySql為例,以下的所有操作都是針對MySql的.

try{
    Class.forName("com.mysql.jdbc.Driver");         
    Toast.makeText(this, "數據庫加載成功", Toast.LENGTH_LONG).show();}catch(ClassNotFoundException e){
    Toast.makeText(this, "數據庫加載失敗\n"+e, Toast.LENGTH_LONG).show();}

添加mysql驅動說明:下載mysql的驅動文件”mysql-connector-java-5.0.8-bin.jar”,在項目根目錄下新建文件夾lib,將mysql的驅動文件”mysql-connector-java-5.0.8-bin.jar”拷貝到lib下

2、連接遠程數據庫,在連接前先確保遠程數據數據庫允許其它連接

try{
    String ip = sqlipedit.getText().toString();
    /*遠程服務器的ip跟端口號,使用賬號、密碼,不同的數據庫使用的連接端口、命令都不同
        mysql使用的連接命令:jdbc:mysql//192.168.1.xxx:3306
    */
    Connection con = DriverManager.getConnection("jdbc:mysql:"+"//192.168.1.64:3306",                        "admin","admin");
    System.out.println("連接成功");         }catch(SQLException e){         
    e.printStackTrace();                
    System.out.println("失敗");}

3、獲取數據庫服務器中已存在的所有數據庫

使用的命令:show databases
Statement statement = null;  
ResultSet result = null; 
 try {  
    //顯示數據庫命令
    String sql = "show databases";
      statement = (Statement) conn.createStatement();    
      //執行獲取數據庫的命令   
      result = statement.executeQuery(sql); 
      //獲取數據庫的數量   
       int size = result.getRow(); 
       //獲取數據庫的名字
      while(result.next()){
            Log.d("DatabaseName", result.getString(1));  
      }           
  } catch (SQLException e) {  
      e.printStackTrace();  
  } finally {  
      try {  
          if (result != null) {  
              result.close();              
              result = null;  
          }  
          if (statement != null) {  
              statement.close();  
              statement = null;  
          }  
      } catch (SQLException sqle) {  
      }  
}

4、切換當前連接所使用的數據庫:

try {    if(!con.isClosed()){        //方法說明:設置此連接的目錄名稱,參數就是前面獲取到的數據庫的名字              
        con.setCatalog((String)databasename);
    }
} catch (SQLException e) {    // TODO 自動生成的 catch 塊
    e.printStackTrace();
}

5、執行sql命令的方法有兩種: 一、Statement.excuteQuery(String sqlcmd):不對數據庫中的內容做修改,只用于查詢 二、Statement.excuteUpdate()String sqlcmd)對數據庫中的內容做修改,包括增刪改等,將該操作封裝成一個方法所有的操作可以直接使用

/*執行mysql的修改命令,包括增、刪、改等命令
 *參數:conn:連接數據庫的鏈接,sql:數據庫的操作命令
 *返回值:為成功操作的數據個數,如:執行修改數據的命令后,有n條列的數據被成功修改,返回值就是n.
*/public  int query_l(Connection conn, String sql) {  
    int row = -1;    if (conn == null) {  
        return -1;  
    }  
    Statement statement = null;  
    ResultSet result = null;  
    try {  
        statement = (Statement) conn.createStatement();  
        //該方法用于修改數據庫內容的。
        row = statement.executeUpdate(sql);                       
    } catch (SQLException e) {  
        e.printStackTrace();  
    } finally {  
        try {  
            if (result != null) {  
                result.close();  
                result = null;  
            }  
            if (statement != null) {  
                statement.close();  
                statement = null;  
            }  
        } catch (SQLException sqle) {  
        }  
    } 
    return row;
}

6、獲取數據庫下的所有數據表

//使用命令:show tables from databasename//使用該命令可以獲取某一數據庫下的所有數據表String sql = "show tables from databasename";
Statement statement = null; 
ResultSet result = null;try {  
    statement =(Statement)con.createStatement();   
     result = statement.executeQuery(sql); 
     while(result.next()){ 
         Log.d("TableName",result.getString(1));                                               
     }
} catch (SQLException e) {
}

7、獲取數據表下的所有字段跟數據

//獲取字段跟字段類型,使用命令:select from tableString sql = "select * from " + tablename;
String ss = "";
java.sql.PreparedStatement ps = con.prepareStatement(sql);  
ResultSet rs = ps.executeQuery();  
java.sql.ResultSetMetaData meta = rs.getMetaData();  
//字段數量int columeCount = meta.getColumnCount();int[] data = new int[columeCount];            
//獲取字段名跟字段類型for (int i = 1; i < columeCount + 1; i++) {            
   data[i-1] = rs.findColumn(meta.getColumnName(i));
   Log.d("字段名",meta.getColumnName(i));
   Log.d("字段類型",meta.getColumnType(i));
} 
//根據字段名獲取該字段的所有數據Statement statement = null;
ResultSet result = null;           
System.out.println(sql);
List list = new ArrayList();try {                
    statement = (Statement) conn.createStatement();              
    result = statement.executeQuery(sql); 
    if (result != null && result.first()) {  
         while (!result.isAfterLast()) {             
            String str = "";            //該處的data就是前面的data,一個for循環結束獲取到的是一條完整的數據
            for(int i:data){                //根據字段名獲取相應的數據內容
                str += result.getString(i)+"\t\t";
            }           
             result.next();  
         }  
     }  
 } catch (SQLException e) {  
     e.printStackTrace();
 }

8、新建數據庫

使用命令:create database databasename
String sql = "create database databasename";query_l(con,sql);

9、刪除數據庫

使用命令:drop database databasename
String sql = "drop database databasename";query_l(con,sql);

10、刪除數據庫中的數據表

使用命令:drop table tablename
String sql = "drop table tablename";query_l(con,sql);

11、新建數據表

使用命令:create table tablename(字段名1 字段類型, 字段名2 字段類型,字段名3...);String sql = "create table tablename(name char(20),sex int(4),number int(4))";
query_l(con,sql);
//創建成功后該表中有三個字段:name、sex、number,字段類型分別是:char(20)、int(4)、int(4)

12、清空表中數據

使用命令:delete from tablename
String sql = "delete from tablename";query_l(con,sql);

13、向表中插入數據

使用命令:insert into table value(name1 ,sex1, number1),(name2,sex2,number2),...該處插入數據應與數據表中的字段一一對應
String sql = “insert into tablename value('張三',1,1002),('李四',1,1003),('王五',0,1004)”;
query_l(con,sql);

14、刪除某一字段

使用的命令:alter table tablename drop 字段名
String sql = “alter table tablename drop sex”;query_l(con,sql);
//執行完后該表中就沒有sex的字段了

15、更改字段名跟類型

使用命令:alter table tablename change 字段名 新字段名 新字段類型
String sql = "alter table tablename change number age int(4)";query_l(con,sql);
//執行完后該表中number字段就變成了age

16、重命名表

使用命令:rename table tablename to newtablename
String  sql = "rename table tablename to newtablename";query_l(con,sql);
//執行完后就可將原表tablename重命名為newtablename

17、修改數據表中的數據

使用命令:update tablename set name='aaa' where num=1005命令說明:如果數據表中有數據num=1005,就將該列數據中的name修改成aaa
String sql = "update tablename set name='aaa' where num=1005";query_l(con,sql);
//如果使用的命令是:update tablename set name='aaa',表示將該表中所有列的數據中的name都設成aaa
審核編輯(
王靜
)
投訴建議

提交

查看更多評論
其他資訊

查看更多

醫療垃圾回收系統工業平板電腦應用解決方案

怎么樣使用QT開發安卓工業平板電腦程序

安卓設備的網絡adb調試設置

安卓工控觸摸一體機的藍牙全面開發教程

組態王在WinCE工業平板電腦的安裝使用