layout/main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/get_record"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="抓資料囉!" />
<TableLayout
android:id="@+id/user_list"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
先在本機端建立與資料庫連線的PHP檔
將ResultSet以JSON的格式回傳
www/AndroidConnectDB/android_connect_db.php
<?php
$db = mysql_pconnect("localhost","user","pwd");
mysql_query("SET CHARACTER SET 'UTF8';");
mysql_query('SET NAMES UTF8;');
mysql_query('SET CHARACTER_SET_CLIENT=UTF8;');
mysql_query('SET CHARACTER_SET_RESULTS=UTF8;');
mysql_select_db("database");
$sql = $_POST['query_string'];
$sql = stripslashes($sql);
$res = mysql_query($sql);
while($r = mysql_fetch_assoc($res))
$output[] = $r;
print(json_encode($output));
mysql_close();
?>
建立一個JAVA類別來呼叫PHP
將JSON以String型態傳給Activity處理
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
public class DBConnector {
public static String executeQuery(String query_string) {
String result = "";
try {
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http://10.0.2.2/AndroidConnectDB/android_connect_db.php");
ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("query_string", query_string));
httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
HttpResponse httpResponse = httpClient.execute(httpPost);
//view_account.setText(httpResponse.getStatusLine().toString());
HttpEntity httpEntity = httpResponse.getEntity();
InputStream inputStream = httpEntity.getContent();
BufferedReader bufReader = new BufferedReader(new InputStreamReader(inputStream, "utf-8"), 8);
StringBuilder builder = new StringBuilder();
String line = null;
while((line = bufReader.readLine()) != null) {
builder.append(line + "\n");
}
inputStream.close();
result = builder.toString();
} catch(Exception e) {
// Log.e("log_tag", e.toString());
}
return result;
}
}
在Activity端,將JSON字串轉成JSON陣列
以迴圈建立TableRow物件,加到Layout中
import org.json.JSONArray;
import org.json.JSONObject;
import android.app.Activity;
import android.os.Bundle;
import android.os.StrictMode;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
public class TestAndroidDBActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViews();
setListeners();
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork()
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.penaltyLog()
.penaltyDeath()
.build());
}
private Button button_get_record;
private void findViews() {
button_get_record = (Button)findViewById(R.id.get_record);
}
private void setListeners() {
button_get_record.setOnClickListener(getDBRecord);
}
private Button.OnClickListener getDBRecord = new Button.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
TableLayout user_list = (TableLayout)findViewById(R.id.user_list);
user_list.setStretchAllColumns(true);
TableLayout.LayoutParams row_layout = new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
TableRow.LayoutParams view_layout = new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
try {
String result = DBConnector.executeQuery("SELECT * FROM user");
/*
SQL 結果有多筆資料時使用JSONArray
只有一筆資料時直接建立JSONObject物件
JSONObject jsonData = new JSONObject(result);
*/
JSONArray jsonArray = new JSONArray(result);
for(int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonData = jsonArray.getJSONObject(i);
TableRow tr = new TableRow(TestAndroidDBActivity.this);
tr.setLayoutParams(row_layout);
tr.setGravity(Gravity.CENTER_HORIZONTAL);
TextView user_acc = new TextView(TestAndroidDBActivity.this);
user_acc.setText(jsonData.getString("account"));
user_acc.setLayoutParams(view_layout);
TextView user_pwd = new TextView(TestAndroidDBActivity.this);
user_pwd.setText(jsonData.getString("pwd"));
user_pwd.setLayoutParams(view_layout);
tr.addView(user_acc);
tr.addView(user_pwd);
user_list.addView(tr);
}
} catch(Exception e) {
// Log.e("log_tag", e.toString());
}
}
};
}
資料表內的資料
Activity執行前
Activity執行後
文章標籤
全站熱搜

感謝seanstar5317大大熱情分享 小弟最近剛接觸連線這個部份 這篇文章讓我獲益良多 希望有機會能一起討論討論
主要是為了做筆記啦XD 我也還算是初學者喔~ 請多多指教!
請問站長大大~ 我練習了您寫的範例不過出現了以下錯誤訊息 "error opening trace file: No such file or directory (2)" 似乎讀不到資料庫的部分~看了很多資料還是不知道錯誤再哪邊 請問我是忘記改什麼變數嘛 ?! 還是版本有問題?
抱歉喔~最近比較少上來看部落格 請問錯誤是發生在哪個類別裡呢? 範例裡的PHP檔名為"android_connect_db.php" 麻煩您檢查一下囉~
String cannot be converted to JSONArray 我的LOGCAT抓到這個錯誤訊息欸 :(
E/log_tag(329): org.json.JSONException: Value
試試看先把PHP要回傳的陣列print_r出來看看 裡面的值看起來怪怪的~~
請問一下,我用網頁開php他會出現這行錯誤 wWarning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\aaa.php on line 12 這樣要怎麼解決?? 上網查了之後是說抓不到值?? 不太知道問題在哪
利用mysql_error()把詳細錯誤訊息叫出來看看 記得寫的滿清楚的
[{"id":"1","account":"qwe","pwd":"qweqwe"},{"id":"2","account":"eee","pwd":"ewe"},{"id":"3","account":"rdfd","pwd":"we1"}] print_r值出來是這個呀 (我自己丟進資料庫的資料) @_@
那在建立JSONArray之前先把傳回來的result用Log顯示出來吧~~ 傳遞字串有時候會莫名其妙加了一些東西XD"
請問大大,print的值出來是null 是不是沒跟資料庫連結上呢?? 不過我程式碼幾乎都沒錯~ 用mysql_error也沒說錯哪~ 一整個卡住啊~求救
在TestAndroidDBActivity這個類別中 String result = DBConnector.executeQuery("SELECT * FROM user"); 查詢語法是放在這一行 可能是沒連到資料庫 或者欄位/表單名稱不對吧
摁摁 我資料庫名稱用database 資料表user 欄位id,account,pwd 內容數值都跟你的結果圖一樣 不過點下查詢還是什麼都沒跑出來
Log 有沒有錯誤訊息呢@@?
你是說catch(Exception e) { //Log.e("log_tag", e.toString()); 這個嗎? 好像都沒甚麼錯誤訊息
因為註解掉了 XD?
好像~哈哈 還有一行也是註解那行是啥 //view_account.setText(httpResponse.getStatusLine().toString()); 不過log那行解掉註解後還是沒顯示啥 QAQ 難得找到用json可以成功連android跟php的 結果卻跑不出來
這行應該是在測試忘記拿掉的.... 你的network_permission有打開嗎??
這個嗎?
看來有開XD" 那分別在PHP、兩個Class內把結果顯示出來 看在哪邊出錯了~
$sql = $_POST['query_string']; 想問這行~ 因為我改成(select ... from ...); php頁面可以跑出json形式的資料庫資料~ 但是在android上還是看不到~ 無力~~~~~~~~~~~~~~~~~~~~~XDD
恩.... 回傳值在DBConnector就不見了嗎?
應該可能吧 ~又試了好幾天還是找不出問題
在每個類別都把回傳值印出來看看阿~~
為什麼我只要("SELECT * FROM user");的user改成我的資料表就無法顯示了 兩個資料內容是一模一樣,資料表名稱不同而已
你的資料表名稱會不會用到保留字呢? 也可以試試 echo mysql_error(); 看有什麼錯誤
大大好@@ 我想請問發生這個錯誤?? error opening trace file: No such file or directory 我php弄我的檔案 http://localhost/android_get/json2.php 結果出現這個ERROR
如果是在手機端連到電腦本機的網頁 URL要用10.0.2.2喔~
這個嗎? 看來有開XD"
那分別在PHP、兩個Class內把結果顯示出來
看在哪邊出錯了~
大大說的兩個class 是說DBConnector與TestAndroidDBActivity嗎??
對阿~ 在回傳JSON字串的過程中都把結果顯示出來看看
大大@@ 我用android給的模擬器去跑的 他在跑那個時出現error opening trace file: No such file or directory 還有大大說的URL要用10.0.2.2喔??的意思我不太懂
因為是用手機執行程式 localhost在這邊是指手機本機 而不是電腦喔 要連到電腦本機的資料庫要用10.0.2.2才可以
*****
*****
*****
*****
print(json_encode($output)); 這行的用意是什麼? 註解掉有關係嗎?
這一行是要把查詢結果的陣列轉換成JSON格式的字串輸出到呼叫端處理 如果要用JSON處理的話一定要有喔~
問一下 sql的 id account pwd 的資料型態是什麼?
int / varchar / varchar
hi~一直都忘了問-.-我用的是XAMPP的 www/AndroidConnectDB/ 這行路徑php檔要放在哪啊?? 我是放在htdoc裡..
htdoc/AndroidConnectDB 底下吧~
不好意思想要請問一下 如果要改成不用按鈕的形式而是直接印在手機螢幕上該如何做呢? 還有就是要如何將從資料庫取到的值來做運用? 謝謝!!
直接顯示的話就是在onCreate就去資料庫撈資料囉~ 請問做運用是指......?
就是假設從資料庫中 TextView user_name = new TextView(Database.this); user_name.setText(jsonData.getString("number")); user_name.setLayoutParams(view_layout); 然後印出來是123 那我是否可以對取出來的123做+1或是-1動作?
當然可以呀 抓出來的值就可以自由運用了阿XD"
阿...那我想要請問要怎麼做@@"" 不知道抓出來的是陣列還是...@@?
PHP回傳的是一個字串(String) 我們利用這個符合JSON格式的字串建立JSONArray / JSONObject物件 再用jsonData.getString("number")這個方法把值抓出來
好的!非常謝謝你! 我來試試看!
不會 =)
假如我資料庫裡有多加一個欄位name要顯示,不知道要那些地方要修改
JSONArray跑迴圈抓資料的部分
先在本機端建立與資料庫連線的PHP檔 將ResultSet以JSON的格式回傳 www/AndroidConnectDB/android_connect_db.php 請問這段我要怎麼用.. 我看不懂這段..,毫無頭緒google蠻多的了...
第三行指的是PHP檔的路徑~ 是哪邊不懂呀@@?
就是我該如何建一個php檔... 和第三段routh在哪裡.. 不好意思,php這邊功夫底真的有點空.....
第三行就是路徑了呀~~ 這部分可能要自己找一下PHP的教學囉
如果我是想要將資料寫入資料庫 不知道要怎麼修改
我已經解決了怎麼寫入到資料庫了 實在太感謝你了 這篇幫助了我很多,而且有問題發問都會回答,真的很謝謝你
這邊都沒說是怎樣寫資料庫的阿>"< 你要不要跟大家分享一下XD 我比較怕回答問題都沒幫到忙啦.... 這篇寫得不太好 造成大家很多困擾ˊˇˋ 需要各位多多指教啦!
前輩您好,小弟剛學,可以跟你要整包原始檔參考嗎?? 信箱: ftchinet@msn.com 感激不盡
其實所有程式碼都在這邊了阿XD
謝謝您的教學 手機已經可以顯示資料了 不過我將資料庫的的內容從原先的英文字換成中文就會出現亂碼 請問原因是?...
應該是PHP回傳值給JAVA的時候 編碼跑掉 猜的啦XD"
$sql = $_POST['query_string']; $res = mysql_query($sql); while($r = mysql_fetch_assoc($res)) $output[] = $r; 我用網頁連的時候 都說這裡有錯誤 可是用mysql_error查也看不出來呢 請問大大是哪裡出問題了@@?
直接用瀏覽器開啟這個php檔案 會沒有query_string這個參數
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads() .detectDiskWrites() .detectNetwork() .penaltyLog() .build()); StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() .detectLeakedSqlLiteObjects() .penaltyLog() .penaltyDeath() .build()); 請問大大這個部分要怎麼跟php做連結
這部分沒有要連PHP阿 請參考上一篇~
The application Andoir-php(process com.example.android_php)has violated its self-enforced StrictMode policy 我按按鈕要抓資料 模擬器就跳出這個問題 想請問大大這樣有沒有辦法解決 THX
請問你的Android版本是什麼
我用2.33的去模擬的
請參考前一篇~ 3.0以下不用設定StrictMode
我是#36訪客 我是用3.2的模擬器
http://mobile.tutsplus.com/tutorials/android/android-sdk_strictmode/ 可以參考這個網頁看看 個人沒碰過這個問題XD"
想請問版大 你當初在做這部分的時候有愈到 程式都沒問題可是卻抓不到資料的問題嗎? 我現在完全不知道是哪部分有誤了@@
有阿~當初也debug很久XD catch到例外的時候可以把錯誤輸出到Log看看 有些我都註解掉了 也有可能是在傳遞資料的時候編碼跑掉 或者JSON格式不對
請問版大 StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads() .detectDiskWrites() .detectNetwork() .penaltyLog() .build()); StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() .detectLeakedSqlLiteObjects() .penaltyLog() .penaltyDeath() .build()); 這段程式碼可以解釋一下ㄇ StrictMode 這句他一直出現紅線
這段的用途請參考前一篇筆記~ 紅線可以把你的游標移過去看他的錯誤是什麼阿~
版大我道模擬器按下按鈕以後 LOG CAT 就會出現下列的東西 12-11 05:26:51.584: D/AndroidRuntime(274): Shutting down VM 12-11 05:26:51.584: W/dalvikvm(274): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 12-11 05:26:51.606: E/AndroidRuntime(274): FATAL EXCEPTION: main 12-11 05:26:51.606: E/AndroidRuntime(274): java.lang.ClassCastException: android.widget.TableRow 12-11 05:26:51.606: E/AndroidRuntime(274): at com.example.successthree.MainActivity$1.onClick(MainActivity.java:42) 12-11 05:26:51.606: E/AndroidRuntime(274): at android.view.View.performClick(View.java:2408) 12-11 05:26:51.606: E/AndroidRuntime(274): at android.view.View$PerformClick.run(View.java:8816) 12-11 05:26:51.606: E/AndroidRuntime(274): at android.os.Handler.handleCallback(Handler.java:587) 12-11 05:26:51.606: E/AndroidRuntime(274): at android.os.Handler.dispatchMessage(Handler.java:92) 12-11 05:26:51.606: E/AndroidRuntime(274): at android.os.Looper.loop(Looper.java:123) 12-11 05:26:51.606: E/AndroidRuntime(274): at android.app.ActivityThread.main(ActivityThread.java:4627) 12-11 05:26:51.606: E/AndroidRuntime(274): at java.lang.reflect.Method.invokeNative(Native Method) 12-11 05:26:51.606: E/AndroidRuntime(274): at java.lang.reflect.Method.invoke(Method.java:521) 12-11 05:26:51.606: E/AndroidRuntime(274): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 12-11 05:26:51.606: E/AndroidRuntime(274): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 12-11 05:26:51.606: E/AndroidRuntime(274): at dalvik.system.NativeStart.main(Native Method)
猜測是你在新增TableRow的時候的轉型出錯了(?)
你好 我測試之後 沒錯誤 但是點下抓資料囉 卻沒有資料出來 請問可能是哪邊問題 路徑確認過了
看一下LOG有沒有錯誤訊息吧~
版大您好: 我的執行後會出現以下的問題,有爬了很多文但都無法解決 想請問版大究竟是哪裡出錯了 12-21 11:27:23.644: E/System(60): Failure starting core service 12-21 11:27:23.644: E/System(60): java.lang.SecurityException 12-21 11:27:23.644: E/System(60): at android.os.BinderProxy.transact(Native Method) 12-21 11:27:23.644: E/System(60): at android.os.ServiceManagerProxy.addService(ServiceManagerNative.java:146) 12-21 11:27:23.644: E/System(60): at android.os.ServiceManager.addService(ServiceManager.java:72) 12-21 11:27:23.644: E/System(60): at com.android.server.ServerThread.run(SystemServer.java:206) 12-21 11:27:23.664: E/EventHub(60): could not get driver version for /dev/input/mouse0, Not a typewriter 12-21 11:27:23.664: E/EventHub(60): could not get driver version for /dev/input/mice, Not a typewriter 12-21 11:27:23.844: E/SoundPool(60): error loading /system/media/audio/ui/Effect_Tick.ogg 12-21 11:27:23.844: E/SoundPool(60): error loading /system/media/audio/ui/KeypressStandard.ogg
sorry現在才看到~ Google了一下這個錯誤 可能是模擬器造成的不明錯誤吧XD" 把原本的刪掉 新增另一個模擬器試試看吧~
請問...有沒有辦法做周期性的讀取資料 謝謝...
http://ccckmit.wikidot.com/ga:timertask 可以參考一下這個網站 >"<
請問版主. 我的log cat出現這個錯誤: 03-31 12:53:22.280: E/log_tag(866): org.json.JSONException: Value null of type org.json.JSONObject$1 cannot be converted to JSONArray 想要請問要怎麼修正才對呢?ˊˋ 然後我的php若直接看的話 頁面上只有顯示 null 的字樣 請問這是正常的嗎?><
應該是PHP端查詢失敗 回傳給JAVA的是錯誤訊息 錯誤訊息就不能轉換成JSON物件了~
請問要如何在TextView中加上卷軸呢?
請問您的卷軸是指@@?
我是上上一樓的發問者 謝謝版主回覆!! 那個問題我已經解決了:) 不過現在遇到一個新的問題: 以下是我主要問題程式片段: (in java) try { String result = DBConnector.executeQuery("SELECT*FROM user where zip = 'newzip' "); System.out.println(result); (php語法) 這是我的錯誤訊息: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\AndroidConnectDB\android_connect_db.php on line 13
我有將java中的語法直接在phpmyadmin中執行 (即SELECT*FROM user where zip = 'newzip') 是可以正確找到該筆符合條件的資料 但是不知道為什麼 透過java寫入至php中去呼叫mySQL執行時卻總是傳回錯誤 上網爬過很多文 有試著去修正過編碼的問題(SET NAMES UTF8;) 也有去php.ini修改過 magic_quotes_gpc = On 但仍舊回傳null以及錯誤訊息 但是我將它改成 SELECT*FROM user where id=1 時 是可以正確執行的00" 所以再猜想會不會是單引號引起的問題 也有將它改成 SELECT*FROM user where zip = /'newzip/' 卻仍舊不見好轉ˊˋ 想要請問是否有解決的方法?ˊˋ 補充: 我的SQL錯誤回報: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\'newzip\'' at line 1
抱歉之前拖這麼久才回覆.... 要使用 escape character 的話, 應該是反斜線 \ 喔 試試看吧@@ ----更新---- 剛剛發現你好像有用反斜線了XD JAVA透過HTTP傳遞字串會自動escape PHP卻沒有處理 可以試試看用 str_replace 把反斜線清掉 或者有其他處理 escape character 的函式(?)
感謝版主回覆!!:) 不過小妹不才 有點搞亂了 $sql = $_POST["query_string"]; $sql = str_replace ("\", " ", "$sql"); $res = mysql_query($sql) or die(mysql_error()); while($r = mysql_fetch_assoc($res)) $output[] = $r; print(json_encode($output)); 不知道replace這樣寫對嗎? 好像不能這樣直接命令?ˊˋ 想要請問該怎麼改才對呢><
版主您好! 我已經解決這個問題了:) 最後使用stripslashes($_POST["query_string"]); 就成功了:) 還是謝謝您的回答!!小妹受益良多~ --------------------------------------------- 另外還有個問題想要請問您 當我按下catch時 資料會一直累積寫入 不知道有沒有什麼方法可以當按下catch時 他會先清空頁面上的值後 再重新寫入呢?
原來要這樣做 謝謝你的分享 >"< 可以在觸發事件的時候 user_list.removeAllViews(); §參考 http://developer.android.com/reference/android/view/ViewGroup.html#removeAllViews() 試試看吧@@
您好~:) 我有試著用user_list.removeAllViews(); 但是會造成只顯示第一筆資料 後續資料會被強迫終止ˊˋ
removeAllViewsInLayout() 這個方法呢@@?
您好~! 恩恩!! 已經可以成功執行了 真的很謝謝版主熱心回覆!!>< 如果不嫌棄的話 小妹最近又有一個新問題ˊˋ 我現在試著將資料庫改放到實驗室中的固定ip上 想要透過php 改連結到位於遠端的資料庫 但是卻回傳找不到資料表 想要請問一下 不知道是什麼原因導致呢?ˊˋ
有幫到忙就好 >"< 可能是用來使用遠端資料庫的登入帳號只能在 localhost 登入 要把登入主機改成 %
版主您好: 想要請問一下 因為我要呈現的資訊太多了 已經超出頁面 不知道有什麼辦法可以讓他出現滾條 或是怎麼樣才能夠往下滑 已看到下方超出頁面的資訊呢?><
可以試試 ScrollView ~
版主妳好 想請問妳一下 我實作妳的程式是 ok 的 不過我想在 php 做好sql 指令處理後由手機來做 jason 的讀取動作就好 而不是由手機發送sql 指令 想請問板大是否能給我個方向或提點
那只要把SQL寫在PHP裡面就好了~
我是上面的發問者 關於 PHP 使用 SQL 這塊我有實作出來 也有運用網頁查看結果是可行的 想請問關於手機方面使用GET方式來接收JASON資料的話該如何實作 有無範例可供參考 期間有嘗試過板大的範例來實作但 POST 的 BasicNameValuePair 無法接收DOUBLE的數值 所以想請問一下板大
GET / POST 都是發送到 PHP 端 接收資料是在 HttpResponse 這部分喔
想請問一下android 連mySQL 一定要透過PHP連嗎 還是可以有其他方式呢
好像都得透過呼叫伺服器端的方式來連資料庫 可以用PHP、JSP、ASP......等 要用JDBC連都會失敗
請問一下~ [{"test_id":"1","test_value":"100"},{"test_id":"2","test_value":"1000"}] DBConnector result出來的結果是這樣 可是沒辦法像版主單純跑出abcd 1234那種(user_acc.setText(jsonData.getInt("test_value"))) 例外處理標記是顯示 Resources$NotFoundException: Resource ID #0x64
這個錯誤是在抓 layout 的時候, ID 有錯誤耶~ 先檢查看看有沒有打錯>"<
想請教一下~HttpPost 連結是沒有的ip 程式執行時會直接當掉 要怎麼確定有那個IP位置的php?
利用 try-catch 吧 可是程式設計師自己寫在裡面的URL 怎麼會沒有這個 IP 0.0
這個範例是我第一個android測試程式 終於踹出來的感動感動,遇到的一些問題分享給看這篇的戰友... 問題1:StrictMode.setThreadPolicy這行出現一堆紅色看錯誤的話應該是minSdkVersion版本太低的問題 到AndroidManifest.xml開啟後把uses-sdk裡面的android:minSdkVersion="XX" 調到8以上吧... 問題2:org.apache.http.conn.HttpHostConnectException: Connection to 出現這種的錯誤訊息 先用內建瀏覽器檢查如果連的到該位址的話 那一樣到AndroidManifest.xml的uses-sdk那段的下面多加
比方我的配置大概這樣吧
花的好多時間除錯真的滿感謝大大的範例教學...
如果我的方向錯誤請大大指教
想問一個問題您在上面說
/*
SQL 結果有多筆資料時使用JSONArray
只有一筆資料時直接建立JSONObject物件
JSONObject jsonData = new JSONObject(result);
*/
這邊要怎寫判斷式來判別一筆還是多筆阿~~
還是先用try包住 JSONArray 如果丟出錯誤就用JSONObject呢
謝謝您的補充 <(_ _)> 這篇有很多不完善的地方請各位多多包涵~ -------------------------------------------------------- 如果是用 Eclipse 開發的話, 在開啟 Manifest.xml 這個檔案的時候, 下面會看到 permission 的分頁, 切換過去也可以選擇要打開那些 permission 喔~ -------------------------------------------------------- 好像只能用您說的方式判斷呢.... 其實小弟我也一直無法理解為何只有一筆資料時不能用 JSONArray
謝謝~ 因為有時候server會關掉XD
您好 小弟是新手剛接觸 想請問一下 網頁:ASP .net C# 資料庫:MySQL android這邊要怎麼連資料庫呢? 要做出 註冊會員(把註冊好的會員資料傳到資料庫存著) 會員登入(把使用者輸入的帳密跟資料庫內的資料確認是不是會員) 存取資料 不知道能不能請您指導一下?
在 HttpPost 那邊把呼叫的 URL 改成 aspx 的URL 其餘部分應該跟以往做網頁端的方式差不多~ 不知道能不能請您詳細敘述一下問題@@
*****
*****
給57樓的朋友補充一下!如果Server關掉的話 程式跑到httpClient.execute那段會當在那邊無法回應 所以多加這兩行吧~反正連線五秒內沒回應就放棄,叫程式不要硬撐的 一樣也要包在try裡面就可以的 httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 5000); httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 10000); 跟大家分享一下
謝謝你的分享 >"<
不好意思 初學程式語言 請問PHP檔裡的 $sql = $_POST['query_string'] 這個query_string 從哪來的? 小弟除了這行不同 其他一樣 但小弟這行是用SQL語法(select ..) 想請問這行是什麼意思
你好 小弟是樓上那為 小弟有看到你將 sql 語法放在android端 不好意思 沒看清楚就在提問 目前小弟執行後 是沒資料的 在PHP端 是有顯示 { "欄位" "資料" } 所以資料庫跟PHP應該沒問題,小弟正在從android 找尋問題
不好意思,不用理上面兩則留言,沒注意到前面有人詢問相關問題了 另外想請問一下,假如我把SQL語法(select)放在PHP那邊,那我android端要怎改 因為沒改是抓不到值
不好意思現在才看到留言 >"< 如果把SQL字串寫在PHP裡面的話 DBConnector 類別在發送 POST 請求的時候 不要傳參數過去就可以囉~
想請問一下 為什麼setContentView(R.layout.main);這邊 main cannot be resolved or is not a field
檢查一下有沒有建立 layout/main.xml 這個排版的檔案
1.ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.cece/.TestAndroidDBActivity } 2.ActivityManager: Warning: Activity not started, its current task has been brought to the front 這是什麼? 是可以執行出來 但模擬器沒有出現資料
把模擬器重開試試看@@?
有從新用了~還是不行 http://127.0.0.1/AndroidConnectDB/android_connect_db ----->我在網路上打這個 他出現 Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\AndroidConnectDB\android_connect_db.php on line 12 null Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\AndroidConnectDB\android_connect_db.php on line 12 null 建議更好的譯法 空
*****
*****
*****
*****
*****
*****
*****
*****
有顯示出來了 謝謝大大 ^^
希望有幫到你的忙 >"<
不好意思 請問一下 用這種寫法可以把資料寫進資料庫mysql嗎? String result = DBConnector.executeQuery("INSERT....."); 還是只能用jdbc?
可以啊~
請教一下 出現這個錯誤 org.json.JSONException: Value
PHP 回傳的結果不是 JSON 格式字串 應該是查詢的時候有錯誤 可以用Log 把結果印出來看看~
不好意思 想請問一個問題>< 程式已經可以成功燒到手機了 但是手機上卻一直無法正確的運作 連button都看不到就直接跳出來 然後說已停止 想請問這會不會是連結不到資料庫的原因>???
程式只有在按下按鈕之後才會連資料庫 所以如果是一開始就打不開 可能是手機Android 版本跟模擬器不一樣喔~
大大我問一下喔~ 如果要把圖片傳進去app 會改很多嗎?
請問您指的是..... 在畫面上放圖片 or 上傳圖片到伺服器@@?
*****
*****
大大 app取mysql資料庫的圖片 會改很多嗎?
到排版的畫面可以找到放圖片的元件
所以程式不用改嗎?
這幾天會寫一下使用圖片的範例 ^_^
請問版主有試過從app輸入中文到資料庫端嗎 目前我嘗試過都以亂碼收場 還在努力找尋問題>< 另外 謝謝你這篇的分享 真的非常受用^^
JAVA 傳到 PHP 的編碼要再檢查一下喔~ 這篇還有很多遺漏的地方 如果有問題的話請多多指教 >"<
版主你好 小弟嘗試版主你的程式之後 出現以下的問題 Call requires API level 9 (current min is 8): new android.os.StrictMode.ThreadPolicy.Builder .detectDiskReads() .detectDiskWrites() .detectNetwork() .penaltyLog() .build()); 是SDK版本問題嗎?
到 Manifest.xml 把SDK min 改成9 就可以囉
我是將android端改連到mssql,但php在接收mssql資料庫值時,中文卻抓不到耶,也不是亂碼,請完全接不到值,既不是亂碼,也不是null,想請問你,這問題要如何解決?(查了很多網路資料都沒有提到)
我沒有連過 MSSQL 耶.... 完全接不到結果是不是在連資料庫的時候就出問題了呢@@?
謝謝版主與各位分享,試過了,沒問題!
感謝版主的分享 但我點下抓資料囉 卻沒有資料出來 LogCat 則顯示 (1)error opening trace file: No such file or directory (2) (2)Emulator without GPU emulation detected. (3)Skipped 197 frames! The application may be doing too much work on its main thread. 想請教是哪一個環節出錯了呢?! 感謝
應該是呼叫後端的PHP 有問題
板主你好, 我試了你提供的程式,一直無法顯示資料 我試著把從資料庫取回的result,在logcat印出來,發現也是正常(用JSON Validator跑過),如下:[{"id":"1","ac":"abc","pw":"1234"},{"id":"2","ac":"def","pw":"45678"}] 但是程式再解析JSON時,logcat就會出現 org.json.JSONException: Value ? of type java.lang.String cannot be converted to JSONArray 請問這是什麼問題???
終於找到問題所在 問題是php檔案的編碼問題 我用emeditor編寫,預設是UTF-8(含簽章) 改為UTF-8(無簽章)就可以了
請問如果要連結到遠端的資料庫,版主有試過嗎? 就是非localhost的.. 例如手機用3G網路也可以傳送POST和接收
應該說,我試過了,但是出現 406 Not Acceptable This request is not acceptable Powered By LiteSpeed Web Server LiteSpeed Technologies is not responsible for administration and contents of this web site! 的拋出錯誤 不知道版主有沒有遇到 在本機上的IP/yy.php都可以正常接收POST 不知為什麼把資料庫移到online的伺服器上就出現這種錯誤 應該不是PHP的語法錯誤,因為就算連執行"空的PHP","單純echo的PHP"也出現此錯誤 我原先是用 http://j796160836.pixnet.net/blog/post/30577968 此老師的做法(其實跟版主一樣原理) 錯誤後,我改用版主的寫法,一樣出現這個錯誤 求版主研討~
是不是被防火牆擋住了@@?
請問一下 為什麼抓資料按下去沒有任何反應
版主你好 小弟我做了一個可以新增MYSQL的程式 PHP:
我是上面那位 感謝大大 我發現問題了 是自己程式打太快,字打錯了 另外,這邊留言很容易吃留言耶...
版主你好~ 我用了你的程式碼但是中文跑出來會出現亂碼。有什麼方法可以解決中文亂碼的問題嗎? 謝謝~
請問版主 你在這行程式中 String result = DBConnector.executeQuery("SELECT * FROM user"); 能夠提供insert和update的SQL語法嗎? 我自己試了好幾次 只做出delete功能
我是94樓的訪客 我剛剛查完資料之後發現 insert和update需要用到的是executeUpdate() 請問版主關於這個方法的內容是否跟executeQuery()是一樣的?
抱歉問個笨問題 因為我只有在前陣子上課時碰過android 以前並沒用過java與php 請問新增的java類別是要放在哪個位置呢? 我用模擬器跑的時候似乎沒有動到java檔?
跟Android 的Activity 放在一起就好了
抱歉我是樓上 請問新增的java類別名稱要取名為?
寫到快瘋掉了 只有感激不盡
BufferedReader bufReader = new BufferedReader(new InputStreamReader(inputStream, "utf-8"), 8); StringBuilder builder = new StringBuilder(); String line = null; while((line = bufReader.readLine()) != null) { builder.append(line + "\n"); } 請問這段的作用是轉成jsonObject可接收的形式嗎 那為何要這樣寫
這邊是讀取PHP 傳回來的字串
我是#100樓的 用mysql_error() 呼叫錯誤 顯示Query was empty 是指 值沒有傳入嗎?? 還是代表甚麼?
是因為mysql_query() 沒有給SQL 語法吧@@
非常謝謝您,程式可以執行^^
版大您好 請問如果SQL搜尋指令在資料庫找不到此筆資料時,會回傳什麼? 我每次用手機搜尋資料庫時,正常情況都能搜尋,但是沒有此筆資料時都會程式崩潰,直接跳"很抱歉,XXX已停止"然後點確定程式就關了...也沒有跳錯誤log(我有把註解拿掉),感覺不是try裡面的問題 我加個IF判斷抓回來的Array.length=0 的話跳出錯誤訊息,也沒有跳出來 程式還是崩潰 有沒有辦法先判斷資料庫有無此資料再決定要不要連php回傳json給java
1. 沒有連到PHP 去查詢怎麼知道有沒有資料XD 2. 如果沒資料的話,PHP 端 json_encode() 的回傳值應該是 [] 或 {}
*****
*****
*****
*****
*****
抱歉 我想請問 我已經可以傳到 資料庫 也可以在android select * FROM 裡做判斷 我要讓 我的 會員帳號 等於我手機上輸入的 帳號 "SELECT * FROM member where Member_Account="+acc.getText().toString() 這是修改後的 !! 當我進行 判斷 帳號相同 就會進入到下一個介面後 顯示出 大大所教JSON抓取的資料 但是!!問題在這裡!~~~~ 當我所輸入的帳號是數字 !! 就可以顯示出 我要的欄位資料! 但是當我輸入有包含英文 或是 全英文 的帳號!! 我的資料就沒辦法顯示了!!!!! 希望大大可以幫我解答 ~~我卡好久~~拜託了!!!~~~~
如果SQL裡面有用到字串的話,要用引號包起來喔 拿你的例子來說的話 "SELECT * FROM member where Member_Account=\""+acc.getText().toString() +"\"" 單引號或雙引號都可以
老大你真是太神嘞 完全把我的疑問解決掉了 感恩感恩!~~~~~~ 太開心啦~~~哈哈哈
很開心能幫到你的忙 ^_^
請問 我資料庫、android的程式碼部分 都ok了! 但是 點了按鈕後 甚麼東西都沒出現。 請問 我是出了甚麼問題嗎? (我的是 mysql
請問你指的ok 是什麼情況下ok @@? 看一下按下按鈕之後 LogCat 有沒有什麼錯誤訊息
請問大大 有沒有FB 或者 其他能夠即時 交談的平台 ok是指 手機程式碼沒有出現錯誤 php 程式碼 全按照 大大您的 LogCat?? 是甚麼??
可以留你的FB唷~ 在程式碼中有些catch 的地方會把錯誤訊息記錄起來 就可以在LogCat 裡面看到了 可以看一下錯誤訊息是什麼
LogCat 一堆紅字 @@
抱歉 請問一下 我照著上面的語法操作,在模擬器上可以成功的抓到資料 但是在手機上卻無法抓取到資料,按下按鈕後,程式會卡住無回應 想問一下是哪邊的問題? 謝謝
可能是被防火牆擋住了
請問大大 可以留FB給我嘛 我也有些問題想直接問你 因為我時間很趕... 麻煩你
我是用記事本來存PHP檔 然後放在C:\AppServ\www這邊 請問這樣是對的嗎
問題: 我如何用android 的listview 來讀取mysql 資料,php 應該要怎樣打,android 讀取php數據的listview要怎樣打??還有listview的後續動作...這些要怎樣做...請大大們可給簡單的範例嗎... 抱歉 一次問這麼多 因為專題時間很緊迫
可以google 看看 關鍵字 : android listview example 還滿多範例的喔~ 也可以留你的FB ^_^
*****
*****
如果我用listview 但是我這個listview裡面的美一筆之後 我還要在各自連結下一個畫面 那我要怎麼製作?
ListView 有提供一個方法 setOnItemClickListener(AdapterView.OnItemClickListener listener)
請問我的catch(Exception e) log出來的錯誤代碼是這串: org.json.JSONException: End of input at character 0 of 請問該怎麼解決呢??
看起來是response 的結果為空字串
*****
*****
大大的名字是啥 我這邊沒看到你欸
請問一下,JAVA檔是直接新增一個CLASS並且名稱跟你一樣,在將範例貼上就行了嗎? 那在IP部份如果我想要直接用手機連資料庫,不是用模擬器的話,是否能夠直接寫上我電腦的虛擬IP再利用手機連上同網域的AP在進行連結可以嗎? 還有PHP個localhost是需要打電腦IP 還是直接打localhost就可以呢?
1. JAVA 一樣就可以了 2. 虛擬IP 可以喔,不過要確認是在同一個區域網路 3. 因為PHP 跟資料庫是放在同一台主機上,所以是localhost,如果有分開的話記得改成資料庫主機的IP
請問一下 程式在模擬器上面能夠成功執行 使用網頁輸入"IP/檔案位置" 也是成功 在別台電腦上面"IP/檔案位置"也是可以 但是在別台電腦上面 模擬器卻無法執行 是為什麼呢? 程式都檢查過了 IP也是過了 還是抓不到資料 ------------------------------------------------------------------------------ 照理來說 程式連接 到IP/檔案位置 在抓localhost的資料庫 是嗎?
是這樣沒錯呀~ 是同一個專案在不同電腦執行嗎?
我是樓上的 我可以從別台電腦連到本機的資料庫了 但是把apk放到手機上還是無法執行
是不是防火牆把公用網路擋住了阿....?
大大 還是你給我你的名字 我家你FB??
*****
*****
我是122樓的~ 從別台電腦連的到本機的資料庫代表防火牆方面是連的進去的所以連線沒問題 不過已經找到問題了 是版本的問題 模擬器設定是4.3版本 但是我的手機是2.3 所以沒辦法執行 找了一下資料腳本必須要在4.0以上的手機才能執行 但是把腳本調低之後 jsonArray 和 JSONObject 就錯誤了 程式碼裡面 jsondata 是抓取 getString() 但是低版本卻顯示抓取int 改了很久還是錯誤 想請問大大該怎麼改寫內容
你的意思是getString() 回傳int 嗎?!
請問我在JAVA 裡面的catch 看到這段錯誤 org.apache.http.conn.HttpHostConnectException: Connection to 192.168.0.104:8080 refused 但是我能夠開手機網頁打開 下面這個位置 192.168.0.104:8080/AndroidConnectDB/android_connect_db 可以連上線 不過這行似乎有錯 while($r = mysql_fetch_assoc($res))
我是127樓~ PHP檔也是放在同一台電腦裡 不過裡面我是打localhost : $db = mysql_pconnect("localhost","root","0000"); 不過$db似乎沒用到,是否要再加上 mysql_select_db("database",$db); 還是打您原本打的 mysql_select_db("database"); 就行了呢? 不好意思一次問那麼多問題
sorry 前面兩個問題解決了0.0 是因為在AndroidManifest.xml 裡面忘記加了網路功能 不過目前現在又個問題 org.json.JSONException: Value
DBConnector 的catch 這段 把註解拿掉 可以看到在發送請求時出現的問題
請問若想要修改資料庫內的資料 String result = DBConnector.executeQuery("SELECT * FROM user"); 是否只需要在sql語法改掉就行了呢
是的~ 不過建議是判斷一下執行的是查詢或更新 因為兩種情況下 回傳的結果不同
沒事了 不知道改到甚麼 = =" 不過還是一樣 4.0以上模擬器可以執行 4.0以下的會顯示這個錯誤 org.json.JSONExecption:Vale of type java.lang.String cannot be converted to JSONArray 看來還要研究 (懶 限定Android4.0以上 哈哈
如果資料庫只有抓到一筆資料 不能用JSONArray 要直接用JSONObject
*****
*****
請問我將 DBConnector.executeQuery("SELECT * FROM user"); 改成 DBConnector.executeQuery("update `database` set `account` = 'xaax' where `id` = '1' ;"); 他沒有回傳值就會出現下列問題 請問要該如何解決呢? mysql_fetch_assoc(): supplied argument is not a valid
在PHP端 mysql_query("update xxxx "); 回傳結果並不是ResultSet 所以在fetch 的時候當然會出錯囉 就是上面說要判斷一下是查詢 / 更新
謝謝版主囉! 我都成功OK了
希望有幫到你的忙 =)
板大,我執行時候出現下面錯誤,這樣要怎麼解決呢?麻煩了 11-18 14:04:40.457: D/log_tag(1136): org.json.JSONException: Value 程式設計(一) at 0 of type java.lang.String cannot be converted to JSONObject
看起來是PHP回傳的值不是JSON格式耶 你的PHP是怎麼回傳的呢?
版大樓上問題已經解決,謝謝你,現在有新的問題想請問你一下 我現在抓回來的直用jsonData.getString();抓到之後,我拿出來做字串比對.equals(); 如果資料庫只有一筆資料可以正確,但是如果有兩筆以上的話,他只會比對最後一筆,如何把抓回來的值每個都可以當作是一個物件去做比對? 麻煩了,謝謝
呃...抱歉我不太懂你的意思@@
for(int i = 0; i < jsonArray.length(); i++) { jsonData = jsonArray.getJSONObject(i); } 這段的jsonDate會一直覆蓋掉抓回來的值,直到最後一筆,那我要怎麼把抓回來的值,每一筆都可以拿出來用,要使用哪種方式?
直接把JSONArray 拿來用就是每一筆資料啦@@
那請問一下JSONArray要怎麼取出裡面的字串?
你在#136 不就做到了嗎 =)
謝謝版主,問題都解決了,很謝謝版主熱心的回覆!!
希望有幫到你的忙 ^_^
請問 android 模擬器 要連mysql 網路是 浮動ip 的話 是不是就沒辦法連了!?
必須要用noip 之類的服務設定一個固定的domain name
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
*****
請問~為什麼沒有指定 table "user" 可以抓到資料呢?
請問如果於Server端,採用Nginx的話,這個程式仍然可以操作嗎??
用Apache 或Nginx 應該是不會影響正常運作的喔~
*****
*****
透過PHP到資料庫讀取圖片路徑(URL) 將路徑傳回手機(JAVA)端後再去抓圖片 有點不太懂耶 所以手機那邊接收後還要再一次URL嗎 有相關程式碼範例可以參考嗎 謝謝
PHP傳回來的是圖片的路徑,不是圖片本身 JAVA會再用這個路徑去抓圖片
*****
*****
*****
*****
*****
*****
版主請問一下 該怎麼一打開程式就立刻顯示從資料庫讀取的資料??
版主你好!我是155樓的訪客。 關於155樓的問題我已經解決了, 又想請問一下,有辦法能定時程式自己撈資料顯示出來嗎? (例如每5秒鐘自動撈一次顯示出來這樣)
關鍵字是 Timer, TimeTask 網路上應該有滿多教學的~
*****
*****
版主 你的這一篇教學對我的作業有很大的幫助 請問一下 有沒有辦法由手機端去更新MySQL裡面的內容 (想要雙向可以連接) 有辦法嗎?
其實做法跟這邊差不多 [差別是這樣] 送update 的SQL 字串到伺服器端 送回來的結果就不是ResultSet 了 而是更新是否成功、或者更新幾筆這樣
HI~ 我想問一下,我要輸入中文字去搜索時不行,但英文則沒問題~ 有解決方法嗎?
應該是因為中文字在傳遞的時候編碼錯誤變成亂碼 網頁端要在HTML meta 的地方設定編碼 (通常用utf-8) PHP 的部分也要在連資料庫時使用utf-8 編碼喔
*****
*****
你好. 1.) 我在 internet explorer run android_connect_db.php 時出現以下文字請問是否正常, 若不正常是什麼問題? Notice: Undefined index: query_string in D:\xampp\htdocs\TestPHP\SQLconnect.php on line 11 Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in D:\xampp\htdocs\TestPHP\SQLconnect.php on line 12 Notice: Undefined variable: output in D:\xampp\htdocs\TestPHP\SQLconnect.php on line 15 null 2.) 用mobile run 時出現 "Value
Warning:mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in D:\xampp\htdocs\TestPHP\SQLconnect.php on line 12< /b>......
1) 如果是直接在瀏覽器執行這個PHP檔,$_POST['query_string']會抓不到資料,應該是這個造成的。 2) 有傳SQL字串到後端嗎?如果有的話應該是連資料庫的時候有問題,可以試試在PHP直接給定SQL字串,確認資料庫連結正常。
你好. 已經測試用以下coding 是可以把 database data列印出來, 證明 database 連接沒有問題. $db_conn = @mysql_connect("localhost","root","1111111") or die ("Could not connect: " .mysql_error()); mysql_select_db("patient", $db_conn); $result = mysql_query("SELECT * FROM patientdata"); while($row = mysql_fetch_array($result)){ printf("ID: %s Name:%s Location:%s Time:%s DataType:%s Value:%s", $row["sDataPid"], $row["sDataPname"], $row["sDataLocation"], $row["sDataTime"], $row["sDataType"], $row["sDataValue"]); echo "
"; 但當執行以後是Server 的coding, mobile 得到的 result 竟然是 internet explorer 列印出來的字而不是 database data,如
,好像是Server 沒有把 database data以 json 送到mobile. 現附上Server 的coding, 請幫忙解決.謝謝!
確定手機端有傳query_string 到後端嗎?
請問,我的資料庫端是wamp的phpmyadmin但是好像連不到? 想請教版主mysql的資料庫程式 謝謝
請問一下php檔要放在哪裡呢~~~謝謝^^
您好 可以請教您一下,如果是要從Android將資料寫回MySQL資料庫,能實現嗎?
可以,作法其實差不多 修改一下後端的SQL語法即可
您好 我也是超級android新手 好不容易也讓專案成功跑得動 可是如果我想一載入activity的時候就馬上讀取database到table/grid view那裡 該怎麼辦啊? (意思就是想撤去按扭那個....)
啊啊我是#166的 成功了~~ 呵呵原來我自己也做得來 很開心喔 也感謝大大的範例^^~~~
1.我的logcat跟run都沒問題,但是我都只能抓到一筆資料而已怎麼會這樣 2.如果要寫在fragment上的話程式應該要怎麼改 3.想請問一下TextView user_b = new TextView(MainActivity.this);中的MainActivity.this是什麼意思呢
1. 是不是沒有跑迴圈,只抓了 ResultSet 的第一筆紀錄? 2. 請問 fragment 是指...? 3. 可以說這個 TextView 是建立在這個 Activity 上
請問如果拿android當接收端也可以這樣寫?
要接收什麼?
不好意思請問一下 我的logcat出現下列紅字 org.json.JSONException: End of input at character 0 of 這該如何解決呀? 謝謝
代表 HttpResponse 傳回來的是空字串,沒辦法轉成 JSON 物件 應該是查詢的時候有問題
將http://10.0.2.2/AndroidConnectDB/android_connect_db.php這段網址 改成 http://wisdom.nutc.edu.tw/~a997031/list.php 然後模擬器在執行時就一直執行不出來
這應該是學校提供給學生的網頁空間吧? 在上面有PHP的環境嗎?
*****
請問大大~我依照您的程式做就可以執行~ 可是為何我將程式碼貼到新專案就會出錯~ 以下這幾行都會有錯>_< 在onCreat前加入 @SuppressLint("NewApi") 這些錯就會消失~~~可是當我在run時這個頁面就會直接停止跳掉 請問是為什麼呢>__<版本的部分我也有改到10了還是無法 StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads() .detectDiskWrites() .detectNetwork() .penaltyLog() .build()); StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() .detectLeakedSqlLiteObjects() .penaltyLog() .penaltyDeath() .build());
這個部分應該是Android 3.0 之後的版本才需要喔~
您好, 依照您的說明,真的做出來了,非常感激! 另有問題請教,就是如果要加上表格邊框,還有要讓資料呈現置中,程式碼上有做何修改呢,謝謝
很高興有幫到忙 =) 這部分要參考一下TableLayout, TableRow的API~
*****
*****
想請問php檔應該放哪? 是C:/AndroidConnectDB/ 嗎?
放在php環境的執行目錄底下~
請問 因為寫在mainactivity.java裡面我的每個分頁都會出現 但我只有某些分頁需要 如果不想寫在mainactivity.java裡面 要怎麼寫在其他的java檔裡面 要怎麼改呢 謝謝
抱歉不太懂你的問題呢@@ 如果是寫在MainActivity中, 換到其他的分頁應該就是其他的Activity, 這樣就不會每個分頁都出現了。
請問一下... 我照著你的程式碼打之後 出現了 org.apache.http.conn.HttpHostConnectException: Connection to http://10.0.2.2 refused 可是我有開網路權限&資料庫那些也有開著
檢查防火牆有沒有擋住資料庫?
後來關掉之後還是出現一樣的結果... 我是用XAMPP 版主能說一下是用甚麼當伺服器嗎@@? 想去載來試看看
我是偷懶用APPSERV
我想請問一下, 若我的query_string = SELECT * FROM menu 在 while ((line=bufReader.readLine())!=null){ s_builder.append(line+"\n"); } 我的bufReader.readLine為何會回傳回來的是一個NULL 我已經check過HTTPResponse那邊回傳的是HTTP1.1/200 OK,代表有response了, 那下面個.Entity 與.getContent應該不會有問題吧? 另外, 直接輸入我的HTTPPOST的testsql.php?q=select%20*%20from%20menu 的話,會正常回傳[{"id":"1","classid":"1","name":"abc","price":"20","status":"1"}, ...] MySQL這邊應該也是ready的 那為何result會回傳NULL呢...??那邊出問題呢??
query_string = SELECT * FROM menu 這個字串是不是沒有加雙引號@@?
問題找到了, 原來是PHP那邊寫的時候做了GET的動作... 所以它會回傳NULL 反之把它改成POST就可以了 另外,我在AVD 2.3.3那邊跑這個APK沒問題, 但為何在android 4.4.2的手機上跑的時候會沒有連接了@_@ 我的design 中
有加上StrictMode那個部分嗎?
我程式執行到 HttpResponse httpResponse = httpClient.execute(httpPost); 他就跳到catch(Exception e)是代表我SQL下挫還是程式連結不到
是什麼例外?
請問可以fb私密嗎
可以在這邊問就好了呀 >"<
診所◎強○姦網站流〇出 goo.gl/ClgFem
請問我在JAVA 裡面的catch 看到這段錯誤 org.apache.http.NoHttpResponseException: The target server failed to respond org.json.JSONException: End of input at character 0 of 這要如何解決呢?
那請問該如何將APP的值傳到網頁,再跟資料庫比對?
請問版主 我程式碼在編譯的時候都沒有錯 但沒有結果呈現(按了按鈕沒反應) 想請問一下phpmyadmin對應呼叫的資料表該如何去新增 (教學的部分那段比較看不到)
自行測試成功 謝謝大大的教學及分享^^
不好意思 打擾> < 我是php新手 請問可以用這個方法把抓到的欄位都存成android陣列嗎 類似acc欄位資料:a,b,c,d 存成acc["a","b","c","d"] 不太清楚方向 @@
如果是PHP要傳到JAVA 要用上述的方式轉換成JSONArray給JAVA處理
謝謝版大 靠這篇文章 成功跑出程式了 忘了加app 網路權限 結果用了好久 哈哈 不過再次在這裡 謝謝你
請問 java是要重新開一個嗎 還是放在android的哪裡??
跟你的程式碼一模一樣 但是在手機上執行抓不到資料 LogCat沒有錯誤訊息 這該怎麼解決?
*****
你好 可以加你facebook問你問題嘛?
不好意思想請問一下~ 1)String result = DBConnector.executeQuery("SELECT * FROM user"); 這上面的user有需要改掉嗎 如果要改該改成什麼 2)我把上面的result印出來是出現
Warning:mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\TestPHP\SQLconnect.php on line 12< /b>...... 該如何改善.. 謝謝
1) 改成你自己的資料表 2) 這代表PHP端執行有問題
你好,我想問為甚麼它顯示NameValuePair上有刪除線?是類似deprecate 的問題,會有影響嗎?
不會影響到正常運作
您好~ 我是把wamp放在遠端的伺服器上,然後我把android_connect_db.php放在遠端的C:\wamp\www裡,那我的URL是打成"http://我的遠端IP/android_connect_db.php"還是沒成功><
沒成功的意思是404嗎? 要確認Apache有啟動、防火牆也有設定喔
你好~ 這些我都有設定 只是我想要在手機測試 但按button手機螢幕都沒有我放在mysql的值 想問這樣URL要打什麼?還是有其他地方需要改? 謝謝
執行時有任何錯誤訊息嗎?
*****
想請教版主大大一下 我用的是eclipse 4.4.2 程式碼部分稍微改了一下(資料庫欄位名稱部分.配合資料庫),其他沒動 資料庫只有account和pwd,沒有id 可是運行部分到了 JSONArray jsonArray = new JSONArray(result); 這行就不動了(程式沒結束,Exception e 視窗沒跳出來) DDMS上只有 [2015-08-06 11:18:47 - ddms] Can't bind to local 8602 for debugger 這種的提示 想請教可能是什麼問題@@ 剛學不久,有的很基礎的地方可能沒注意到,請多包涵(鞠躬
版主你好 08-25 21:06:05.680 23464-23464/com.example.administrator.testandroiddbactivity E/log_result﹕ [{"id":"1","account":"abcd","pwd":"1234"},{"id":"2","account":"efgh","pwd":"4321"},{"id":"3","account":"ijkl","pwd":"5678"},{"id":"4","account":"mnop","pwd":"8765"}] 08-25 21:06:05.680 23464-23464/com.example.administrator.testandroiddbactivity E/log_tag﹕ org.json.JSONException: Value of type java.lang.String cannot be converted to JSONArray 出現這兩行錯誤,真的不知道該如何解決
*****
*****
你好,我跟198訪客一樣的問題,BUTTON都可以正常按, HttpPost("http://自己的ipv4/AndroidConnectDB/android_connect_db.php"); 可以正常讀資料且會顯示在模擬器上,但改成HttpPost("http://***.***.***.***:****/AndroidConnectDB/android_connect_db.php");之後就都沒有辦法顯示MYSQL的資料,但是BUTTON仍然可以操作, logcat有這些問題
Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead
2015-09-19 21:37 
seanstar5317 2015-09-21 16:25 
閒雜人等 2015-10-08 01:51 
訪客 2015-12-03 15:46 
朱朱 2015-12-14 22:46 
請問一下 按照你範例作 2016-01-23 21:41 
訪客 2016-02-18 10:04 
有問題的人 ORZ 2016-02-19 17:27 
訪客 2016-02-19 17:31 
訪客 2016-02-22 10:44 
訪客 2016-02-25 19:26 
eason 2016-03-04 10:43 
Liu Chia-hao 2017-02-02 18:57 
XXX 2017-11-22 16:09 
php新手 2019-06-06 15:32 
King 2022-06-02 12:06 - [Android]利用ImageView 在畫面上顯示圖片
- [PHP]使用 PHPMailer 套件 + GMail 的 SMTP 來發送電子郵件
- [JavaScript]利用JQuery實做「摺疊選單」
- [JavaScript]利用JQuery實做Input Text Box Hints
- [Android]從Mysql 抓資料,動態新增TextView至TableLayout
- [Android]android.os.NetworkOnMainThreadException
- (149,778)[Android]從Mysql 抓資料,動態新增TextView至TableLayout
- (83,930)[Android]利用ImageView 在畫面上顯示圖片
- 本日人氣:
- 累積人氣:
- 未分類文章 (1)
應該是伺服器上的PHP版本比較新,會輸出一些額外的訊息 可以試試看把waring關掉 或者改用建議的mysqli
*****
想請問這個PHP的方法可以把圖片存在伺服器端嗎?
想請問一下,如果我要把TableLayout改成ListView的方式顯示,該如何改呢?
com.example.shing_home_pc.myapplication E/log_tag: org.json.JSONException: End of input at character 0 of 是神麼問題 ?
import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.HTTP; 我想請問這段程式碼需要用到其他的函式庫 那是甚麼呢
不好意思打擾一下,我用你的檔案修改,出現了 Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\Users\118227\Downloads\TWAMPd\htdocs\android_connect_db2.php on line 13 null 請問這代表著甚麼意思?
不好意思,我想問一下,您的程式碼中。到底有哪些要修改,能不能讓我知道一下。 因為整個都是黑ㄚㄚ的一片 > < 希望不會冒犯你。
請問版主用甚麼開發的呢? 是Eclipse還是android studio?
請問版主 現在org.apache.http.client.HttpClient;不支援了 你這該如何修改
請問我剛接觸app 上面的語法是可以連接資料庫嗎 還是只有抓資料
可以請問一下我的PHP連網頁都顯示不出值為什麼嗎??
你好想要請問一下 有JSP連結MYSQL的範例可以分享嗎?
在android 系統上已成功抓取資料,但要將字串轉成數字為何都會錯錯誤? 該如何轉換
版主你好 我跟著你的程式碼製作 完全沒出現錯誤 但是按按鈕之後沒有出現任何東西 請問有可能是甚麼問題? 該怎麼解決呢?
文章搜尋
近期文章
熱門文章
BlogConnect
參觀人氣
文章分類