安卓系统的远程数据库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机箱    |   机箱行业资讯    |   联系我们    |   网站地图    |           网站技术支持:云驰力