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センチメートル

站長

發文: 8390
積分: 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
JCConf Taiwan 2014 歡迎關注!!
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センチメートル

站長

發文: 8390
積分: 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
JCConf Taiwan 2014 歡迎關注!!
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センチメートル

站長

發文: 8390
積分: 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
JCConf Taiwan 2014 歡迎關注!!
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

井底蛙



發文: 621
積分: 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