當前位置:首頁 » 安卓系統 » android遠程資料庫訪問

android遠程資料庫訪問

發布時間: 2022-07-03 20:17:05

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

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

Ⅱ android如何訪問遠程sql資料庫

直接訪問遠程資料庫不是一個好方法。
但一定要訪問,可以採用:
http或者webservice介面訪問。

看這個鏈接,肯定能幫到你。

http://wenku..com/view/5ff81984d4d8d15abe234efa.html

Ⅲ 請問Android怎樣連接遠程MySQL資料庫

沒直接連接過資料庫。我是連接的servlet然後給它查詢語句,servlet查詢後以xml形式返回數據。
安卓用HttpClient連接servlet,HttpClient使用詳情網路有。

Ⅳ 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 訪問遠程SQL Server資料庫

可以用用http協議訪問webservice,然後讓webservice訪問sqlserver。

Ⅵ android程序中如何直接操作遠程伺服器上的資料庫

直接操作是辦不到的,而且這樣很不安全。
有方法達到你想要的效果,具體如下。
建議:在客戶端和服務端之間寫一個自己的通信協議。
比如:客戶端要更改、刪除服務端的數據,就給服務端發送一個報文:「刪除」+表名+條件。
服務端這么接到後,就調用服務端的程序,將接到的報文轉化為sql語句執行即可。

簡單的一個流程就是上面那樣子啦,有點像QQ和QQ伺服器的一個交互過程。

補充:如果樓主對TCP/IP協議比較了解的話,上面的過程可以輕松實現。現實中的應用例子也是這樣,誰也不會讓Client直接操作資料庫的,那無異於自殺。

Ⅶ android如何訪問遠程伺服器

1、現在電腦上安裝Teamviewer,運行該軟體,會生成ID和密碼,

如果要每次開機都能遠程訪問,可以設置無人值守訪問,如下圖:

Ⅷ Android 怎麼連接遠程資料庫

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

Ⅸ 如何將Android應用程序連接到遠程資料庫

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

Ⅹ 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文件中直接添加如下語句導入

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

熱點內容
mc中國版伺服器地址 發布:2024-04-20 15:33:13 瀏覽:411
手機修改wifi密碼網站是什麼 發布:2024-04-20 15:22:05 瀏覽:323
js源碼下載 發布:2024-04-20 15:05:16 瀏覽:20
編譯翻譯的區別 發布:2024-04-20 14:55:53 瀏覽:894
登錄之後qq密碼要在哪裡看 發布:2024-04-20 14:55:03 瀏覽:731
天龍多開腳本 發布:2024-04-20 14:53:05 瀏覽:771
同一段代碼編譯的長度不同 發布:2024-04-20 14:24:14 瀏覽:380
緩存美劇權力的游戲 發布:2024-04-20 14:16:52 瀏覽:988
如何刪除word文件保存密碼 發布:2024-04-20 14:15:18 瀏覽:825
紅米安卓10如何降級到安卓9 發布:2024-04-20 14:13:25 瀏覽:31