JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java ME、Google Android 平台與 JavaCard 討論區 » Android  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
作者 連接到遠端資料庫(mysql) 使用jdbc
rnbjacky





發文: 8
積分: 0
於 2009-04-02 01:51 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我試著把java的改成android的原始碼 如下:

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
package com.android.hello;
 
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import java.sql.*;
 
public class HelloAndroid extends Activity {
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     try{
       Class.forName("com.mysql.jdbc.Driver");
       Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/android?user=root&password=1234&autoReconnect=true");
       TextView printSuc = new TextView(this);
       printSuc.setText("Connection Successful!");
       setContentView(printSuc);
     }
     catch(SQLException sqle){
       TextView printExc = new TextView(this);
       printExc.setText("SQLException");
       setContentView(printExc);
     }
     catch(ClassNotFoundException sqle){
       TextView printExc = new TextView(this);
       printExc.setText("ClassNotFoundException");
       setContentView(printExc);
     }
 
   }
}




程式大概就是
用helloworld的改
然後同java的方式
連到localhost的mysql
連不到就會顯示例外的訊息

mysql的jdbc的jar我也已經放到的參考的lib裡了
但是出現這樣的錯誤:


沒辦法開啟

我google了很多外國論壇的文章
關鍵字大概是:android remote database mysql

剛好有人問到這個問題
'什麼樣是最好的方式用來存取遠端資料庫的資料?'(沒有人解答...)

剛好我的問題就是這個 所以我試了上面這個程式

結果是失敗的ㄒ口ㄒ

問題一:
是Android本身不支援 或是 Android本身其他的問題嗎??還是我的程式碼有問題

問題二:
google比賽得獎的作品http://www.cab4me.com/(呼叫計程車)
這類的程式應該也是有用到資料庫吧?那他們的實作方法是如何的??

問題三:
要建立資料庫來讓多個手機(client)存取
怎麼樣才是最好的方式用來存取遠端資料庫的資料??

感謝幫忙!!!有錯請幫忙指正!!


rnbjacky edited on 2009-04-02 01:53
reply to postreply to post
作者 Re:連接到遠端資料庫(mysql) 使用jdbc [Re:rnbjacky]
samlu_128





發文: 173
積分: 2
於 2009-04-02 19:30 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我自己都是透過 http 來存取遠端伺服器上的資料庫資料。

直接連線存取資料庫,嗯,就算可以,我也不建議這麼做,安全性太差了。


reply to postreply to post
blog: ysl 的程式天堂
web1: The #1 world clock for Android
web2: 美食, 旅遊, 住宿景點分享網站
程式讓我在我的想像天堂裡,盡情創造
作者 Re:連接到遠端資料庫(mysql) 使用jdbc [Re:rnbjacky]
rnbjacky





發文: 8
積分: 0
於 2009-04-02 22:19 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
首先感謝 samlu_128 的回覆^^

======================================================
我在android 開發者的論壇有看到有人有類似的建議(其實就是跟samlu_128談的一樣)

提到了三個重點
(1)就是samlu_128提的用http的方式去抓取資料
而不直接聯結到資料庫的原因就是安全 , 效率 還有driver要配在package裡很不方便之類的

(2)可以使用REST SOAP的方式
這個部分我比較不清楚
同(1)的意思嗎??就是實作的方式是用REST SOAP

(3)使用Google Data API然後用手機抓取資料

這個是我比較有興趣的方式

於是我找了這個:
http://code.google.com/intl/zh-TW/apis/gdata/

其中的這個=>Google Base Data API 可能是我需要的東西

但是我對這個API的使用方式 跟架構 都還不了解

======================================================
目前我的想法是:
使用Android api中 http的部分(client)

對Google Base Data 存放的資料 進行operation(GET POST ....) (server 的 interface)

回傳給Android(client)

其中最大的問題在於Google Base Data api

(1)這個方法可行嗎??

(2)如果可行,請問有什麼建議關於使用Google Base Data api 的方式來實作 遠端資料存取
或是有什麼成功實例可以參考的??

抱歉,每次問題都長篇大論, 感謝可以幫我解答的大大^^


reply to postreply to post
作者 Re:連接到遠端資料庫(mysql) 使用jdbc [Re:rnbjacky]
koji

秒速5センチメートル

站長

發文: 8339
積分: 19
於 2009-04-02 23:40 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
你貼的圖是因為你沒src所以無法出現程式碼
並不是說他出錯在那一行
但是我記得之前就有人試過連DB..應該都有點問題

如同samlu說的, 最簡單方式就是自己用http or socket的方式去跟主機溝通,輾轉取得資料.

Google Base Data api..沒去研究過,但是像你說的那種可行呀
http://base.google.com/base/
只是資料應該就是放到google base那邊,你透過client api去存取..
而且放上去其他人大機也都存取的到吧?你是要這樣的?

看來也頗麻煩的
還是簡單一點就是寫個動態網頁,手機就利用http來回資料...

koji


reply to postreply to post
Facebook上的TWJUG社團,歡迎加入
作者 Re:連接到遠端資料庫(mysql) 使用jdbc [Re:rnbjacky]
madeintw1122





發文: 5
積分: 0
於 2009-04-07 23:01 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
在Android上直接連結的話
我之前也是連結不到資料庫!!
不過我改用 Socket 的方式就可以實作了!


reply to postreply to post
作者 Re:連接到遠端資料庫(mysql) 使用jdbc [Re:rnbjacky]
rnbjacky





發文: 8
積分: 0
於 2009-04-09 15:33 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
請問madeintw1122 大大

可以給幾個實例參考一下嗎??


reply to postreply to post
作者 Re:連接到遠端資料庫(mysql) 使用jdbc [Re:rnbjacky]
bradcafe





發文: 14
積分: 0
於 2009-04-20 00:17 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我寫了另一種架構, 提供給大家參考看看: http://blog.brad.tw/?p=70

其實想法很單純, 因為 Android 可以使用 java.net, 所以利用 ServerSocket 與 Socket 來處理.
樓上有人用 Http, 我另外寫一個角色類似 http 的 Java Application
應該可以應付同時多 Android Client, 因為寫成 Thread 方式來處理

也請先進給予指導及建議.


reply to postreply to post
作者 Re:連接到遠端資料庫(mysql) 使用jdbc [Re:bradcafe]
koji

秒速5センチメートル

站長

發文: 8339
積分: 19
於 2009-04-20 09:53 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
bradcafe wrote:
我寫了另一種架構, 提供給大家參考看看: http://blog.brad.tw/?p=70

其實想法很單純, 因為 Android 可以使用 java.net, 所以利用 ServerSocket 與 Socket 來處理.
樓上有人用 Http, 我另外寫一個角色類似 http 的 Java Application
應該可以應付同時多 Android Client, 因為寫成 Thread 方式來處理

也請先進給予指導及建議.


因為你附的code應該是簡化過很難置評, 但是斷線處理, thread數量處理等等..看起來沒特別處理.
如果你的資料庫連線沒有必要一直保持在連線狀態中, 我是認為架個java app server
寫個servlet取得請求跟回傳json 或是xml格式的資料應該比較方便

你文中所提的安全性議題是?...
另外用web存取跟intent應該沒什麼關係
你只要用httpclient對指定url取得資料就可以了.

koji


reply to postreply to post
Facebook上的TWJUG社團,歡迎加入
作者 Re:連接到遠端資料庫(mysql) 使用jdbc [Re:koji]
bradcafe





發文: 14
積分: 0
於 2009-04-20 10:09 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
太感謝您的回覆.

其實真的是還沒有處理到斷線及控制Thread數量, 只是將重點擺在 Android Client 可以存取 MySQL Server 的主題上而已.
很單純的想法是, 無論是 Tomcat + Servlet 或是 Apache + PHP 之類的方式, 似乎又太大了,

只是為了上述的議題而架設一個 Server, 好像小題大作, 可能還因此必須處理 Server 的安全性
所以才想說自己寫一個專門只處理 android client 的 request 及 response 的 Application, 這樣是否比較單純而已,

是否能請問該如何用 http client 向 Web Server 的 url 來存取資料?
因為目前只會產生一個 Intent 物件來處理, 其他的還沒有處理過.

才剛入門 android, 好感謝 koji 的回覆


reply to postreply to post
作者 Re:連接到遠端資料庫(mysql) 使用jdbc [Re:bradcafe]
koji

秒速5センチメートル

站長

發文: 8339
積分: 19
於 2009-04-20 10:32 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
就是直接在程式中使用
http://developer.android.com/reference/org/apache/http/client/HttpClient.html

去跟指定url要資料

取得HttpEntity轉出來就是了

koji


reply to postreply to post
Facebook上的TWJUG社團,歡迎加入
作者 Re:連接到遠端資料庫(mysql) 使用jdbc [Re:koji]
bradcafe





發文: 14
積分: 0
於 2009-04-20 10:50 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
OK, 來依照 koji 的建議,
來 extends org.apache.http.impl.client.DefaultHttpClient 玩看看.

感激不盡


reply to postreply to post
作者 Re:連接到遠端資料庫(mysql) 使用jdbc [Re:rnbjacky]
samlu_128





發文: 173
積分: 2
於 2009-04-20 12:38 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我也支持 koji 的觀點。

關於如何使用 org.apache.http ,也就是 Apache HttpClient 4.0 模組。
有興趣的也可參考我部落格上的這篇

Android 上的 HTTP 服務相關函式 (II)


reply to postreply to post
blog: ysl 的程式天堂
web1: The #1 world clock for Android
web2: 美食, 旅遊, 住宿景點分享網站
程式讓我在我的想像天堂裡,盡情創造
作者 Re:連接到遠端資料庫(mysql) 使用jdbc [Re:rnbjacky]
madeintw1122





發文: 5
積分: 0
於 2009-04-21 00:04 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
關於rnbjacky 所問的範例
其實我是在google所搜尋到!
http://www.saturn.dti.ne.jp/~npaka/android/SocketEx/
似乎是日本人寫的!
我把server端,加上寫入資料庫的部份
就像bradcafe大大那樣的實作方式!


reply to postreply to post
作者 Re:連接到遠端資料庫(mysql) 使用jdbc [Re:rnbjacky]
bradcafe





發文: 14
積分: 0
於 2009-04-21 22:32 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
koji 建議的方式, 我用以下方式實做出來:
HttpClient dhc = new DefaultHttpClient();
HttpGet hg = new HttpGet("http://localhost/mmsql.php");
HttpResponse hr = hg.execute(get);

相當簡單就可以處理到 android client, 超好用的.

結果, 老闆不同意架設 Web Server
因為, 他說: android client 存取 SQL Server, 關 Web Server 什麼事? 又沒有要架設網站! 只是要用 android 的 gps 收集經緯度資料到 SQL Server 而已.
請問, 偶該如何處理這一段比較好?
可能, 老闆的觀念有問題, 可是...


reply to postreply to post
作者 Re:連接到遠端資料庫(mysql) 使用jdbc [Re:bradcafe]
plutotw

井底蛙



發文: 619
積分: 3
於 2009-04-21 22:53 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
跟他解釋什麼是 n-tier
什麼是資安


reply to postreply to post
作者 Re:連接到遠端資料庫(mysql) 使用jdbc [Re:rnbjacky]
rnbjacky





發文: 8
積分: 0
於 2009-04-21 23:24 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
非常感謝一起討論這篇的大大們!!

希望 bradcafe 可以把後續再分享一下!!


reply to postreply to post
» JWorld@TW »  Java ME、Google Android 平台與 JavaCard 討論區 » Android

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8