服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Android - android使用mysql的方法总结

android使用mysql的方法总结

2022-10-17 13:40laozhang Android

在本篇文章中小编给大家整理了关于android使用mysql的具体方法和实例代码步骤,需要的朋友们学习下。

android可以使用mysql数据库,android连接数据库的方式有两种。

第一种是通过连接服务器,再由服务器读取数据库来实现数据的增删改查,这也是我们常用的方式。

第二种方式是android直接连接数据库,这种方式非常耗手机内存,而且容易被反编译造成安全隐患,所以在实际项目中不推荐使用。

1.加载外部jar包

在Android工程中要使用jdbc的话,要导入jdbc的外部jar包,因为在Java的jdk中并没有jdbc的api,我使用的jar包是mysql-connector-java-5.1.18-bin.jar包,网络上有使用mysql-connector-java-5.1.18-bin.jar包的,自己去用的时候发现不兼容,所以下载了比较新版本的,jar包可以去官网下载,也可以去百度,有很多前人们上传的。

2.导入jar包的方式

方式一:

可以在项目的build.gradle文件中直接添加如下语句导入

?
1
compile files('libs/mysql-connector-java-5.1.18-bin.jar')

方式二:下载jar包复制到项目的libs目录下,然后右键复制过来的jar包Add as libs

三.建立数据库连接

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
protected void onCreate(Bundle savedInstanceState) {
 
  super.onCreate(savedInstanceState);
 
  setContentView(R.layout.activity_jdbc);
 
  new Thread(runnable).start();
 
}
 
Handler myHandler=new Handler(){
 
  public void handleMessage(Message msg) {
 
    // TODO Auto-generated method stub
 
    super.handleMessage(msg);
 
    Bundle data=new Bundle();
 
    data=msg.getData();
 
    //System.out.println("id:"+data.get("id").toString());  //输出第n行,列名为“id”的值
 
    Log.e("TAG","id:"+data.get("id").toString());
 
    TextView tv= (TextView) findViewById(R.id.jdbc);
 
    //System.out.println("content:"+data.get("content").toString());
 
  }
 
};
 
Runnable runnable=new Runnable() {
 
  private Connection con = null;
 
  @Override
 
  public void run() {
 
    // TODO Auto-generated method stub
 
    try {
 
      Class.forName("com.mysql.jdbc.Driver");
 
      //引用代码此处需要修改,address为数据IP,Port为端口号,DBName为数据名称,UserName为数据库登录账户,Password为数据库登录密码
 
      con =
 
          //DriverManager.getConnection("jdbc:mysql://192.168.1.202:3306/b2b", "root", "");
 
      DriverManager.getConnection("jdbc:mysql://http://192.168.1.100/phpmyadmin/index.php:8086/b2b",
 
          UserName,Password);
 
    } catch (SQLException e) {
 
      // TODO Auto-generated catch block
 
      e.printStackTrace();
 
    } catch (ClassNotFoundException e) {
 
      // TODO Auto-generated catch block
 
      e.printStackTrace();
 
    }
 
    try {
 
      testConnection(con);  //测试数据库连接
 
    } catch (java.sql.SQLException e) {
 
      // TODO Auto-generated catch block
 
      e.printStackTrace();
 
    }
 
  }
 
  public void testConnection(Connection con1) throws java.sql.SQLException {
 
    try {
 
      String sql = "select * from ecs_users";    //查询表名为“oner_alarm”的所有内容
 
      Statement stmt = con1.createStatement();    //创建Statement
 
      ResultSet rs = stmt.executeQuery(sql);     //ResultSet类似Cursor
 
      //<code>ResultSet</code>最初指向第一行
 
      Bundle bundle=new Bundle();
 
      while (rs.next()) {
 
        bundle.clear();
 
        bundle.putString("id",rs.getString("userid"));
 
        //bundle.putString("content",rs.getString("content"));
 
        Message msg=new Message();
 
        msg.setData(bundle);
 
        myHandler.sendMessage(msg);
 
      }
 
      rs.close();
 
      stmt.close();
 
    } catch (SQLException e) {
 
    } finally {
 
      if (con1 != null)
 
        try {
 
          con1.close();
 
        } catch (SQLException e) {}
 
    }
 
  }
 
};

注意:

在Android4.0之后,不允许在主线程中进行比较耗时的操作(连接数据库就属于比较耗时的操作),需要开一个新的线程来处理这种耗时的操作,没新线程时,一直就是程序直接退出,开了一个新线程处理直接,就没问题了。

当然,连接数据库是需要网络的,千万别忘了添加访问网络权限:

?
1
<uses-permission android:name=”android.permission.INTERNET”/>

四.bug点

1.导入的jar包一定要正确

2.连接数据库一定要开启新线程

3.数据库的IP一定要是可以ping通的,局域网地址手机是访问不了的

4.数据库所在的服务器是否开了防火墙,阻止了访问

延伸 · 阅读

精彩推荐
  • Androidandroid IPC之binder通信机制

    android IPC之binder通信机制

    Binder通信机制说来简单,但是在使用的过程的遇到了一些问题,最后终于解决了,现在晒出来和大家分享一下,希望可以帮助你们...

    Android教程网1962020-12-21
  • AndroidAndroid实现滑动加载数据的方法

    Android实现滑动加载数据的方法

    这篇文章主要介绍了Android实现滑动加载数据的方法,实例分析了Android通过滑动实现动态加载数据的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...

    华宰4922021-03-28
  • AndroidAndroid基本游戏循环实例分析

    Android基本游戏循环实例分析

    这篇文章主要介绍了Android基本游戏循环,以完整实例形式较为详细的分析了Android实现基本游戏循环的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考...

    红薯5982021-04-02
  • AndroidAndroid框架学习之Volley和Glide详解

    Android框架学习之Volley和Glide详解

    这篇文章主要给大家介绍了关于Android框架学习之Volley和Glide的相关资料,文中通过示例代码介绍的非常详细,对各位Android开发者们具有一定的参考学习价值...

    CMusketeer8342022-02-15
  • AndroidAndroid编程中的消息机制实例详解

    Android编程中的消息机制实例详解

    这篇文章主要介绍了Android编程中的消息机制,结合实例形式较为详细的分析了Android中消息机制的原理,注意事项与相关使用技巧,需要的朋友可以参考下...

    liuhe68811852021-05-03
  • AndroidAndroid中自定义控件之液位指示器

    Android中自定义控件之液位指示器

    这篇文章主要介绍了Android中自定义控件之液位指示器 方法的相关资料,需要的朋友可以参考下...

    bluejww6392021-06-28
  • Android分享几个Android开发有用的程序代码

    分享几个Android开发有用的程序代码

    本文主要是给大家分享了几个常用而且很实用的程序代码片段,都是个人项目中提取出来的,有需要的小伙伴可以直接拿走使用...

    Android开发网6182021-03-14
  • Android详解android系统的定制

    详解android系统的定制

    这篇内容给大家分享了关于android系统的定制的一些步骤和基本知识点,有兴趣的朋友参考学习下。...

    dongyi19888192022-03-06