安卓系统的远程数据库MySql操作

  • 文章关键词:

    数据库

    MySql

  • 开发系统: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

审核编辑(王静)

工控机箱_19寸工业机箱厂家_服务器机箱品牌制造商

产品中心
工业机箱

工控机箱
工控机箱
服务器机箱
服务器机箱
OEM/ODM定制流程
工控机箱定制流程
  • 定制咨询
    工控机箱定制咨询
    Step1
  • 需求分析
    工控机箱定制需求分析
    Step2
  • 可行性分析
    工控机箱定制可行性分析
    Step3
  • 确认规格
    工控机箱定制确认规格
    Step4
  • 报  价
    工控机箱定制报价
    Step5
  • 合同签订
    工控机箱定制合同签订
    Step6
  • 图纸确认
    工控机箱定制图纸确认
    Step7
  • 样品确认
    工控机箱定制样品确认
    Step8
  • 批量生产
    工控机箱定制批量生产
    Step9
迈肯思优势
工控机箱优势
迈肯思的八大优势MACASE'S EIGHT ADVANTAGES
迈肯思的八大优势
解决方案
机箱行业解决方案
机架式机箱行业解决方案 机架式机箱行业解决方案
服务器机箱行业解决方案 服务器机箱行业解决方案
工业机箱行业解决方案 工业机箱行业解决方案
工控机箱行业解决方案 工控机箱行业解决方案
工控机箱品牌厂商

MACASE用心打造每个细节
以全新的技术与的服务开创中国工控机箱领域新的篇章!
从这里开始,了解迈肯思的一切

服务器机箱品牌厂商
新闻资讯
4u机箱资讯
友情链接:
服务器机箱    |  工控机箱    |   2u机箱    |  4u机箱    |   机箱行业资讯    |   联系我们    |   网站地图    |           网站技术支持:云驰力