当前位置:首页 » 安卓系统 » android链接数据库

android链接数据库

发布时间: 2022-09-27 10:09:35

Ⅰ Android 怎么连接远程数据库

想实现一个功能即让android访问远程数据库,但是网上很多人都不建议直连。据说问题多多。那么中间就加个第三者吧。
实现思路:在数据库和Android客户端添加一个webservice,处理每次客户端发来的请求。而在android客户端使用ksoap2解析webservice返回的数据。
一 webservice 端,我使用序列化的方式实现的。不知道这里跟xml的实现哪个对手机来说更好。这里先放下,以后研究。
1.我使用的是xfire。新建一个webservice项目,然后我们开始写代码
2.一个接口
java代码
public interface ICompany {
public List<Company> getCompanyList();
}
3一个实现类
Java代码
public class ICompanyImp implements ICompany {
CompanyDAO com=new CompanyDAO();
//得到所有公司列表
public List<Company> getCompanyList() {
List<Company> list=new ArrayList<Company>();
try {
list=com.getCompanyList();
} catch (sqlException e) {
e.printStackTrace();
list=null;
}
return list;
}
}
注意: 我这里的返回值是list,不少webservice的基本类型,所以需要为它配置文件 接口+.aegis.xml
4 接口+.aegis.xml
Xml代码
<?xml version="1.0" encoding="UTF-8"?>
<mappings>
<mapping>
<!--
<method name="getCollectionsRowCount">
<parameter index="0" componentType="java.lang.String"/>
</method>
-->
<!-- 返回的类型是Map的话,做法和List一样。但定义的类型,是Map中的Value部分 -->
<method name="getCompanyList">
<return-type componentType="bean.Company"/>
</method>
</mapping>
</mappings>

5.service.xml
Xml代码
<?xml version="1.0" encoding="UTF-8"?>
<beans >
<service xmlns="http://xfire.codehaus.org/config/1.0"
xmlns:s="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<name>MyService</name>
<serviceClass>main.service.ICompany</serviceClass>
<implementationClass>main.service.ICompanyImp</implementationClass>

<style mce_bogus="1">wrapped</style>
<use>literal</use>
<scope>application</scope>
<namespace>http://android.googlepages.com/</namespace>
</service>
</beans>

发布项目后,运行效果如图:

项目结构:

二 android客户端

因为ksoap2解析webservice得到的数据类似于以下:getCompanyListResponse{out=anyType{Company=anyType{company=安徽江淮汽车股份有限公司; id=1; }; }; }
1 解析类:MyWebServiceHelper
Java代码
public class MyWebServiceHelper {

// WSDL文档中的命名空间
private static final String targetNameSpace = "http://android.googlepages.com/";

// WSDL文档中的URL
private static final String WSDL = "http://192.168.1.144:8080/oilservice/services/MyService";
// 需要调用的方法名(获得Myervices中的helloWorld方法)

//需要调用的方法名(获得Myervices中的login方法)
private static final String getCompany="getCompanyList";

public List<Company> getCompanyList( ) {

List<Company> list=new ArrayList<Company>();

SoapObject request =new SoapObject(targetNameSpace,getCompany);

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);

envelope.dotNet = false;
envelope.setOutputSoapObject(request);

AndroidHttpTransport httpTranstation = new AndroidHttpTransport (WSDL);

try {
httpTranstation.call(targetNameSpace+getCompany, envelope);
SoapObject soapObject = (SoapObject) envelope.getResponse();
//如果获取的是个集合,就对它进行下面的操作
if(soapObject.getName()=="anyType") {
//遍历Web Service获得的集合
for(int i=0;i<soapObject.getPropertyCount();i++){
Company m=new Company();

//获取单条的数据
SoapObject soapChilds =(SoapObject)soapObject.getProperty(i);

//对单个的数据进行再次遍历,把它的每行数据读取出来
m.setId(Integer.parseInt(soapChilds.getProperty("id").toString()));
m.setCompany(soapChilds.getProperty("company").toString());

/*
//获取实体类的所有属性
Field[] field = m.getClass().getDeclaredFields();

//遍历所有属性,第一个是序列化的id,serialVersionUID,用不到。
for(int j=0 ; j<field.length ; j++){
//获取属性的名字
String name = field[j].getName();
System.out.println(name);

}*/
// }

list.add(m);
}

}

} catch (IOException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
}

return list;
}
}

2 实现类:

Java代码
public class OilActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Spinner spinner = (Spinner) findViewById(R.id.company);

ArrayAdapter<String> adapter = new ArrayAdapter<String>(
this,android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(
android.R.layout.simple_spinner_dropdown_item);

//调用自已写的webService
MyWebServiceHelper webServiceHelper=new MyWebServiceHelper();
List<Company> compnayList= webServiceHelper.getCompanyList();

for(int i=0;i<compnayList.size();i++){
adapter.add(compnayList.get(i).getCompany());
}

spinner.setAdapter(adapter);

}
}
3 两个项目中都用到的bean
Java代码
public class Company implements Serializable{

private static final long serialVersionUID = 1L;

private int id;
private String company;

public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}

}

最后测试以下,list返回正确。效果图:

3项目结构:

参考文章:
http://ksoap2.sourceforge.net/doc/api/ ksoap2的API
http://topic.csdn.net/u/20110412/16/0341626d-8576-4dda-b9e4-aab3ff50c980.html 关于list处理的帖子
http://blog.csdn.net/haha_mingg/article/details/6338332,总的思路的实现。在此感谢作者的无私奉献
android 初学,愿与大家相互交流。共同进步。

Ⅱ Android客户端怎么与服务器数据库连接

不能与数据库连接的

Android客户端不能直接与服务器数据库连接。数据库是需要非常大的内存,安装之后有好几G,连接数据库要有一个像SQLServer里的webservice,这样的一个桥梁来间接访问。就是在服务器运行一个服务端程序,该服务端程序通过接收来自android客户端的指令,对数据库进行操作。

客户端的http请求可以通过 HttpClient类实现,在anddroid 4.0之后,客户端的网络请求已经不被允许在主线程中运行,所以还需注意另开启一个子线程进行网络请求。

(2)android链接数据库扩展阅读:

Android安全权限机制:

Android默认设置下,所有应用都没有权限对其他应用、系统或用户进行较大影响的操作。这其中包括读写用户隐私数据(联系人或电子邮件),读写其他应用文件,访问网络或阻止设备待机等。安装应用时,在检查程序签名提及的权限,且经过用户确认后,软件包安装器会给予应用权限。

下载一款Android应用通常会要求如下的权限:拨打电话、发送短信或彩信、修改/删除SD卡上的内容、读取联系人的信息、读取日程信的息,写入日程数据、读取电话状态或识别码、精确的(基于GPS)地理位置、模糊的(基于网络获取)地理位置、创建蓝牙连接、

还有对互联网的完全访问、查看网络状态,查看WiFi状态、避免手机待机、修改系统全局设置、读取同步设定、开机自启动、重启其他应用、终止运行中的应用、设定偏好应用、震动控制、拍摄图片等。

Ⅲ android 手机怎么连接电脑上的数据库,直接获取数据库数据

数据库很多,但是安卓直接支持的数据库只有sqlite一种。如果要使用其它的非本地数据库,你得建立连接,采用webservice或http协议中转数据。

安卓访问mysql里的数据得:
1)先建立网络,使用WIFI局域网
2)在PC建立数据访问接口,编写http协议应用(方法非常多。 asp、php、jsp都有访问mysql的方法),还得关掉防火墙
3)编写安卓手机客户端连接设备的http service

Ⅳ android 如何连接数据库

这种方式通常连接一个外部的数据库,第一个参数就是数据库文件,这个数据库不是当前项目中生成的,通常放在项目的Assets目录下,当然也可以在手机内,如上面参数那个目录,前提是那个文件存在且你的程序有访问权限。

另一种使用数据库的方式是,自己创建数据库并创建相应的数据库表,参考下面的代码:
public class DatabaseHelper extends SQLiteOpenHelper {
//构造,调用父类构造,数据库名字,版本号(传入更大的版本号可以让数据库升级,onUpgrade被调用)
public DatabaseHelper(Context context) {
super(context, DatabaseConstant.DATABASE_NAME, null, DatabaseConstant.DATABASE_VERSION);
}
//数据库创建时调用,里面执行表创建语句.
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(createVoucherTable());
}
//数据库升级时调用,先删除旧表,在调用onCreate创建表.
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + DatabaseConstant.TABLE_NAME);
onCreate(db);
}
//生成 创建表的SQL语句
private String createVoucherTable() {
StringBuffer sb = new StringBuffer();
sb.append(" CREATE TABLE ").append(DatabaseConstant.TABLE_NAME).append("( ").append(“ID”)
.append(" TEXT PRIMARY KEY, ")
.append(“USER_ID”).append(" INTEGER, ").append(“SMS_CONTENT”).append(" TEXT ) ");
return sb.toString();
}
} 继承SQLiteOpenHelper并实现里面的方法.

之后:
//得到数据库助手类
helper
=
new
DatabaseHelper(context);
//通过助手类,打开一个可读写的数据库连接
SQLiteDatabase
database
=
helper.getReadableDatabase();
//查询表中所有记录
database.query(DatabaseConstant.TABLE_NAME,
null,
null,
null,
null,
null,
null);

Ⅳ 请问Android怎样连接远程MySQL数据库

没直接连接过数据库。我是连接的servlet然后给它查询语句,servlet查询后以xml形式返回数据。
安卓用HttpClient连接servlet,HttpClient使用详情网络有。

Ⅵ Android studio怎么连接本地数据库设计登录界面

我们项目的前提是你已经将基本的运行环境及sdk都已经安装好了,读者可自行网络环境配置相关内容,本文不再赘述。右键点击new-->Mole,Mole相当于新建了一个项目。

选择Android Application,点击next

将My Mole 和app改成自己项目相应的名字,同时选择支持的Android版本

这一步我们选择Blank Activity,自己手动编写登录界面,而不依赖系统内置的Login Activity,一直点击next,最后点击finish就完成了项目的创建

在project下我们可以看到出现了我们刚才创建的login项目

展开res/layout,点击打开activity_main.xml文件,在这个文件里我们将完成登录界面的编写

这是初始的主界面,还没有经过我们编写的界面,Android Studio有一个很强大的预览功能,相当给力,将activity_main.xml的代码替换成如下代码:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:stretchColumns="0,3">
<TableRow>
<TextView />
<TextView
android:text="账 号:"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24px"
/>
<EditText

Ⅶ android怎么连接mysql数据库

用Android程序去直连MySQL数据库,觉得这样做不好,出于安全等方面考虑。数据库地址,用户名密码,查询SQL什么的都存在程序里,很容易被反编译等方法看到。
建议把表示层和数据层逻辑分开,数据层对应网页的表示层提供接口,同时在为Android手机端提供一个接口,简介访问数据库,这接口可以2端都保持一致,比如XML+RPC或者json等等,Android端也有现成的东西能直接用,既安全又省事。

android 链接mysql数据库实例:
package com.hl;
import java.sql.DriverManager;
import java.sql.ResultSet;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class AndroidMsql extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn=(Button)findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
sqlCon();
}
});

}

private void mSetText(String str){
TextView txt=(TextView)findViewById(R.id.txt);
txt.setText(str);
}

private void sqlCon(){
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (Exception e) {
e.printStackTrace();
}
try {
String url ="jdbc:mysql://192.168.142.128:3306/mysql?user=zzfeihua&password=12345&useUnicode=true&characterEncoding=UTF-8";//链接数据库语句
Connection conn= (Connection) DriverManager.getConnection(url); //链接数据库
Statement stmt=(Statement) conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from user";//查询user表语句
ResultSet rs=stmt.executeQuery(sql);//执行查询
StringBuilder str=new StringBuilder();
while(rs.next()){
str.append(rs.getString(1)+"\n");
}
mSetText(str.toString());

rs.close();

Ⅷ android 手机怎么连接电脑上的数据库,直接获取数据库数据

数据库很多,但是安卓直接支持的数据库只有sqlite一种。如果要使用其它的非本地数据库,你得建立连接,采用webservice或http协议中转数据。
安卓访问mysql里的数据得:
1)先建立网络,使用WIFI局域网
2)在PC建立数据访问接口,编写http协议应用(方法非常多。
asp、php、jsp都有访问mysql的方法),还得关掉防火墙
3)编写安卓手机客户端连接设备的http
service

Ⅸ android APP如何连接服务器上的SQL数据库,直接在手机上查询、更新数据库信息

后台操作数据库的增删改查,然后写成接口,android端来调用接口,返回数据显示就ok了

Ⅹ android怎么连接sqlite数据库

SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。此外它还是开源的,任何人都可以使用它。许多开源项目((Mozilla, PHP, Python)都使用了 SQLite.

Android 开发中使用 SQLite 数据库
Activites 可以通过 Content Provider 或者 Service 访问一个数据库。下面会详细讲解如果创建数据库,添加数据和查询数据库。
创建数据库
Android 不自动提供数据库。在 Android 应用程序中使用 SQLite,必须自己创建数据库,然后创建表、索引,填充数据。Android 提供了 SQLiteOpenHelper 帮助你创建一个数据库,你只要继承 SQLiteOpenHelper 类,就可以轻松的创建数据库。SQLiteOpenHelper 类根据开发应用程序的需要,封装了创建和更新数据库使用的逻辑。SQLiteOpenHelper 的子类,至少需要实现三个方法:
构造函数,调用父类 SQLiteOpenHelper 的构造函数。这个方法需要四个参数:上下文环境(例如,一个 Activity),数据库名字,一个可选的游标工厂(通常是 Null),一个代表你正在使用的数据库模型版本的整数。
onCreate()方法,它需要一个 SQLiteDatabase 对象作为参数,根据需要对这个对象填充表和初始化数据。
onUpgrage() 方法,它需要三个参数,一个 SQLiteDatabase 对象,一个旧的版本号和一个新的版本号,这样你就可以清楚如何把一个数据库从旧的模型转变到新的模型。

热点内容
phplinux服务器 发布:2024-05-02 20:30:23 浏览:754
安卓在哪里安装网易官方手游 发布:2024-05-02 20:15:07 浏览:408
qq宠物的文件夹 发布:2024-05-02 20:13:46 浏览:366
做脚本挂 发布:2024-05-02 19:09:14 浏览:931
打王者开最高配置哪个手机好 发布:2024-05-02 19:08:31 浏览:351
python字典使用 发布:2024-05-02 19:01:14 浏览:134
我的世界服务器联机ip 发布:2024-05-02 18:50:39 浏览:619
steam密码从哪里看 发布:2024-05-02 18:50:00 浏览:629
convertlinux 发布:2024-05-02 18:20:00 浏览:705
zxingandroid简化 发布:2024-05-02 17:47:53 浏览:189