android访问数据库的数据
有点多请耐心看完。
希望能帮助你,还请及时采纳谢谢。
一.前言
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文件中直接添加如下语句导入
compile files('libs/mysql-connector-java-5.1.18-bin.jar')
方式二:下载jar包复制到项目的libs目录下,然后右键复制过来的jar包Add as libs
三.建立数据库连接
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之后,不允许在主线程中进行比较耗时的操作(连接数据库就属于比较耗时的操作),需要开一个新的线程来处理这种耗时的操作,没新线程时,一直就是程序直接退出,开了一个新线程处理直接,就没问题了。
当然,连接数据库是需要网络的,千万别忘了添加访问网络权限:
<uses-permission android:name=”android.permission.INTERNET”/>
四.bug点
1.导入的jar包一定要正确
2.连接数据库一定要开启新线程
3.数据库的IP一定要是可以ping通的,局域网地址手机是访问不了的
4.数据库所在的服务器是否开了防火墙,阻止了访问
————————————————
版权声明:本文为CSDN博主“shuaiyou_comon”的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/shuaiyou_comon/article/details/75647355
㈡ 如何实现android访问oracle数据库
通过cmd可对数据库进行访问,现在开发android一般都用的eclipse+adt+sdk;进入cmd输入adb
shell
,然后
cd
/data/data
再ls
显示所有的包名,cd
到你的包名,然后
cd
databases
再ls
显示你的数据库名
,最后
sqlite3
数据库名
就可以对数据库进行操作了。
㈢ android 怎么读取数据库中的数据
android读取数据库可以使用sqlite一些api进行读取,实例如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
* 查找一条数据
* @param uid
*/
public User find(Integer uid){
SQLiteDatabase db=dbOpenHelper.getReadableDatabase(); //创建数据库辅助类
Cursor cursor =db.rawQuery("select * from user where uid=?", new String[]{uid.toString()}); //创建一个游标
if(cursor.moveToFirst()){ //循环遍历查找数组
int uid2=cursor.getInt(cursor.getColumnIndex("uid"));
String uname=cursor.getString(cursor.getColumnIndex("uname"));
String uaddress=cursor.getString(cursor.getColumnIndex("uaddress"));
User user=new User();
user.setUid(uid2);
user.setUname(uname);
user.setUaddress(uaddress);
return user;
}
cursor.close();
return null;
}
㈣ 如何在android中调用数据库资源
android平台上的数据库,一般使用sqlite,sqlite属于轻量级数据库,占用空间小,效率高。 在android中使用sqlite,只需要几个步骤。 打开数据库 使用游标读取数据库中数据 给你贴一段我的代码。 SQLiteDatabase dbs; Cursor cursor1=null; private static class DatabaseHelper extends SQLiteOpenHelper { DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } } dbs = SQLiteDatabase.openOrCreateDatabase("/data/database5/database6.db", null); cursor1 = dbs.rawQuery ("SELECT Enname,Chname,Damage FROM pricedata2 WHERE addCheck='1'",null); list1 = (ListView) findViewById(R.id.pricelistsalehandgun); while (cursor1.moveToNext()) { Map<String,Object>listItem = new HashMap<String, Object>(); listItem.put("item0",cursor1.getString(0)); listItem.put("item1",cursor1.getString(1)); listItem.put("item2",cursor1.getString(2)); listItems1.add(listItem); }
㈤ android应用是如何访问数据库的
android本地数据库sqlite基本是用来存本地数据或者加载服务器上的数据的。你是想问android客户端如何和服务器的数据库交互吧?这个很简单,他们不直接交互,android会发消息给服务器,请求某一些操作,然后服务器收到客户端的消息后,对应的再操作服务器上的数据库,然后返回消息给客户端。
㈥ android有哪几种方式进行数据库访问
Android为数据存储提供了多种方式,分别有如下几种:
文件
SharedPreferences
SQLite数据库
内容提供者(Content provider)
网络
使用文件进行数据存储
首先给大家介绍使用文件如何对数据进行存储,Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的。
复制代码 代码如下:
public class FileActivity extends Activity {
@Override public void onCreate(Bundle savedInstanceState) {
...
FileOutputStream outStream = this.openFileOutput("csdnt.txt", Context.MODE_PRIVATE);
outStream.write("CSDN".getBytes());
outStream.close();
}
}
openFileOutput()方法的第一参数用于指定文件名称,不能包含路径分隔符“/” ,如果文件不存在,Android 会自动创建它。创建的文件保存在/data/data/<package name>/files目录,如: /data/data/cn.csdn.action/files/csdn.txt ,通过点击Eclipse菜单“Window”-“Show View”-“Other”,在对话窗口中展开android文件夹,选择下面的File Explorer视图,然后在File Explorer视图中展开/data/data/<package name>/files目录就可以看到该文件。
openFileOutput()方法的第二参数用于指定操作模式,有四种模式,分别为: Context.MODE_PRIVATE = 0
Context.MODE_APPEND = 32768
Context.MODE_WORLD_READABLE = 1
Context.MODE_WORLD_WRITEABLE = 2
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。
如果希望文件被其他应用读和写,可以传入:
openFileOutput("csdn.txt", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);
android有一套自己的安全模型,当应用程序(.apk)在安装时系统就会分配给他一个userid,当该应用要去访问其他资源比如文件的时候,就需要userid匹配。默认情况下,任何应用创建的文件,sharedpreferences,数据库都应该是私有的(位于/data/data/<package name>/files),其他程序无法访问。除非在创建时指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE ,只有这样其他程序才能正确访问。
读取文件内容
如果要打开存放在/data/data/<package name>/files目录应用私有的文件,可以使用Activity提供openFileInput()方法。
FileInputStream inStream = this.getContext().openFileInput("csdn.txt");
Log.i("FileTest", readInStream(inStream));
readInStream()的方法请看本页下面备注。
或者直接使用文件的绝对路径:
File file = new File("/data/data/cn.csdn.action/files/csdn.txt");
FileInputStream inStream = new FileInputStream(file);
Log.i("FileTest", readInStream(inStream));
注意:上面文件路径中的“cn.csdn.action”为应用所在包,当你在编写代码时应替换为你自己应用使用的包。
对于私有文件只能被创建该文件的应用访问,如果希望文件能被其他应用读和写,可以在创建文件时,指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE权限。
Activity还提供了getCacheDir()和getFilesDir()方法:
getCacheDir()方法用于获取/data/data/<package name>/cache目录
getFilesDir()方法用于获取/data/data/<package name>/files目录
㈦ 怎样使Android程序调用mysql数据库里面的数据
一、首先要加载JDBC驱动包。
步骤:右击项目找到build path->configure build path->libraries——>add External JARs添加驱动包
二、写测试类:TestCon.java
(在此之前,首先
1.在自己的电脑上Mysql下确定账户是"root",密码是"123456";
2.进入账户,创建数据库cui;
3.在数据库cui下面,创建表test1 包含_id(int 类型自动增加) username(String 类型)、password(String 类型);
4.在表中插入数据,以便显示
)
1 package com.test.an;
2
3 import java.sql.Connection;
4 import java.sql.DriverManager;
5 import java.sql.PreparedStatement;
6 import java.sql.ResultSet;
7 import java.sql.SQLException;
8
9
10 public class TestCon1{
11 public static void main(String[] args)
12 {
13 Connection con = null;
14 String sql;
15 PreparedStatement pre;
16 ResultSet rs;
17
18 try {
19 String driver="com.mysql.jdbc.Driver";
20 Class.forName(driver);
21
22 String url="jdbc:mysql://localhost:3306/cuiuseUnicode=true&characterEncoding=latin1";//utf-8也行
23 con = DriverManager.getConnection(url, "root", "123456");
24
25 sql = "select _id,username,password from test1" ;
26 pre = con.prepareStatement(sql);
27
28 rs = pre.executeQuery();
29 while(rs.next()){
30 int id = rs.getInt(1);
31 String username = rs.getString(2);
32 String password = rs.getString(3);
33
34 System.out.println("id="+id+";username="+username+";password="+password);
35 }
36 con.close();
37 } catch (SQLException e) {
38 e.printStackTrace();
39 } catch (ClassNotFoundException e) {
40 e.printStackTrace();
41 }
42
43 }
44
45 }
运行结果:
id=1;username=ccc;password=123456
id=2;username=xxx;password=654321
id=3;username=ddd;password=123456
id=4;username=ddf÷;password=yyt
id=5;username=cuixiaodong;password=cxd
id=6;username=vv;password=cxd
㈧ android如何访问SQL数据库
通过cmd可对数据库进行访问,现在开发android一般都用的eclipse+adt+sdk;进入cmd输入adb
shell
,然后
cd
/data/data
再ls
显示所有的包名,cd
到你的包名,然后
cd
databases
再ls
显示你的数据库名
,最后
sqlite3
数据库名
就可以对数据库进行操作了。
㈨ android 怎么调用数据库方法
SQLite也支持SQL标准类型,VARCHAR、CHAR、BIGINT等。
创建数据库
Android 不自动提供数据库。在 Android 应用程序中使用 SQLite,必须自己创建数据库,然后创建表、索引,填充数据。Android 提供了 SQLiteOpenHelper 帮助你创建一个数据库,只要继承 SQLiteOpenHelper 类,就可以创建数据库。继承了SQLiteOpenHelper的子类,必须实现三个方法:
1、构造函数,调用父类 SQLiteOpenHelper 的构造函数。这个方法需要四个参数:上下文环境(例如,一个 Activity),数据库名字,一个可选的游标工厂(通常是 Null),一个代表你正在使用的数据库模型版本的整数。
2、onCreate()方法,它需要一个 SQLiteDatabase 对象作为参数,根据需要对这个对象填充表和初始化数据。
3、onUpgrage() 方法,它需要三个参数,一个 SQLiteDatabase 对象,一个旧的版本号和一个新的版本号,这样可以清楚如何把一个数据库从旧的模型转变到新的模型。
㈩ android 手机怎么连接电脑上的数据库,直接获取数据库数据
数据库很多,但是安卓直接支持的数据库只有sqlite一种。如果要使用其它的非本地数据库,你得建立连接,采用webservice或http协议中转数据。
安卓访问mysql里的数据得:
1)先建立网络,使用WIFI局域网
2)在PC建立数据访问接口,编写http协议应用(方法非常多。
asp、php、jsp都有访问mysql的方法),还得关掉防火墙
3)编写安卓手机客户端连接设备的http
service