當前位置:首頁 » 數據倉庫 » android讀取遠程資料庫數據
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

android讀取遠程資料庫數據

發布時間: 2022-11-30 01:41:03

『壹』 如何將Android應用程序連接到遠程資料庫

要與遠程資料庫進行通信,你需要Web服務,以便從遠程資料庫獲取數據或使數據適合遠程資料庫。
我不確定你目前使用哪個網路平台,但我建議你使用REST和JSON。

『貳』 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開發如何遠程查找在電腦上的ACCESS數據顯示在Text中嗎

操作可行的話,基本就是兩種方式:

1)直連,一般不推薦(可以參考這個網頁鏈接),其實就是直接用mysql的jar包進行遠程資料庫連接,注意例子是mysql的,需要把驅動代碼換成access的

網頁鏈接

2)遠程服務端連接,,就是你再使用eclipse新建個web項目,簡單的可以啥都不想,就直接寫個簡單的servlet,也必須用mysql的連接jar包,進行資料庫查詢後返回你需要的信息,然後使用tomcat等工具完成介面發布後,你就可以直接用android手機端進行網路訪問(可以使用httpclient或httpurlconnection,或者其他網路框架也行),獲取你需要的信息了。剩下的就是UI操作了

『肆』 Android 怎麼連接遠程資料庫

資料庫對於你的開發應用來說都是遠程的
一般情況下你需要提供url
username
password就可以訪問對應的資料庫的,他跟你資料庫放在那裡沒關系,你只要確保你提供的url是可訪問的,還有就是你訪問資料庫時有響應的資料庫驅動支持。

『伍』 請問Android怎樣連接遠程MySQL資料庫

Android客戶端直接連接遠程MySQL資料庫的方法如下:

String result = "";
//首先使用NameValuePair封裝將要查詢的年數和關鍵字綁定
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("year","1980"));

//使用HttpPost封裝整個SQL語句
//使用HttpClient發送HttpPost對象
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://example.com/getAllPeopleBornAfter.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
}catch(Exception e){
Log.e("log_tag", "Error in http connection "+e.toString());
}
//將HttpEntity轉化為String
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();

result=sb.toString();
}catch(Exception e){
Log.e("log_tag", "Error converting result "+e.toString());
}

//將String通過JSONArray解析成最終結果
try{
JSONArray jArray = new JSONArray(result);
for(int i=0;i<jArray.length();i++){
JSONObject json_data = jArray.getJSONObject(i);
Log.i("log_tag","id: "+json_data.getInt("id")+
", name: "+json_data.getString("name")+
", sex: "+json_data.getInt("sex")+
", birthyear: "+json_data.getInt("birthyear")
);
}
}
}catch(JSONException e){
Log.e("log_tag", "Error parsing data "+e.toString());
}

雖然Android開發中可以直接連接資料庫,但是實際中卻不建議這么做,應該使用伺服器端中轉下完成。

『陸』 Android 怎麼連接遠程資料庫

1:要有伺服器端程序,如ruby等,由伺服器端操作資料庫,android客戶端通過http收發json或xml與伺服器交互。
2:android有自己的資料庫sqlite,但那隻適合儲存本機的資料。

『柒』 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程序中如何直接操作遠程伺服器上的資料庫

直接操作是辦不到的,而且這樣很不安全。
有方法達到你想要的效果,具體如下。
建議:在客戶端和服務端之間寫一個自己的通信協議。
比如:客戶端要更改、刪除服務端的數據,就給服務端發送一個報文:「刪除」+表名+條件。
服務端這么接到後,就調用服務端的程序,將接到的報文轉化為sql語句執行即可。
簡單的一個流程就是上面那樣子啦,有點像QQ和QQ伺服器的一個交互過程。
補充:如果樓主對TCP/IP協議比較了解的話,上面的過程可以輕松實現。現實中的應用例子也是這樣,誰也不會讓Client直接操作資料庫的,那無異於自殺。

『玖』 請教安卓下如何訪問本地及遠程資料庫

首先要有資料庫客戶端呢。
然後就是組網,就是手機要和本地或者遠程的
資料庫伺服器
組網,參見下零遁的內網訪問,全埠可用,直接訪問資料庫IP

『拾』 安卓系統中從其他應用中讀取共享的資料庫數據需要用到

可以按以下步驟進行:
Android應用的資料庫一般都是私有的,其他應用無法訪問,那麼怎麼在手機已root的前提下,在自己的應用中讀取指定應用中的數據信息呢,現提供一種思路。
以uc瀏覽器歷史瀏覽記錄為例:
一:對手機進行root。
某些廠家的Android設備是支持在系統設置中一鍵root的,如魅族手機。更通用的情況下一般是用第三方軟體進行root,如KingRoot。
二:在手機上安裝RootExplorer。
RootExplorer是在Android上使用很方便的文件瀏覽器,借用它,我們可以找到uc瀏覽器的歷史記錄資料庫所在為data/data/com.UCMobile/databases/history/history。
三:將資料庫文件復制到sd卡指定目錄。
四:從sd卡資料庫文件中讀取數據。
五:將數據載入到Recyclerview中展示。
至此,我們已經實現了在自己應用中讀取其他應用資料庫數據的一個完整過程,誠然這種方式存在許多局限性,但不失為解決方案的一種。