安卓得到MySQL表数据 [英] Android get data from MySql table
问题描述
我开发一个Android应用程序......,我在MySQL开发了一个表,表中有一定的结果1-10值和所有值单独输入...
在我的Android应用程序时,一个特定的值,显示该值的结果,必须采取从上表...但它无法正常工作......消息越来越像不幸的是应用程序关闭'...我将我的code在这里...请检查code,如果发现任何错误,请帮助.....
Activity.java
公共类FirstResult扩展活动
{
字符串PID;
TextView的txtName的;
//进度对话框
私人ProgressDialog pDialog;
// JSON解析器类
JSONParser jsonParser =新JSONParser();
//单品链接
私有静态最后弦乐url_product_detials =http://iascpl.com/app/get_product_details.php;
// JSON节点名称
私有静态最后弦乐TAG_SUCCESS =成功;
私有静态最后弦乐TAG_PRODUCT =产品;
//私有静态最后弦乐TAG_PID =PID;
//私有静态最后弦乐TAG_NUMBER =号;
//私有静态最后弦乐TAG_PRICE =价格;
私有静态最后弦乐TAG_DESCRIPTION =说明;
@覆盖
保护无效的onCreate(包savedInstanceState)
{
super.onCreate(savedInstanceState);
的setContentView(R.layout.firstresult_xm);
TextView的TXT1 =(TextView中)findViewById(R.id.textView2);
txt1.setText(getIntent()getStringExtra(name10));
。PID = txt1.getText()的toString();
新GetProductDetails()执行();
}
/ **
*背景异步任务来获得完整的产品信息
* * /
类GetProductDetails扩展的AsyncTask<字符串,字符串,字符串> {
/ **
*在启动后台线程显示进度对话框
* * /
@覆盖
在preExecute保护无效(){
super.on preExecute();
pDialog =新ProgressDialog(FirstResult.this);
pDialog.setMessage(装载产品的详细信息,请稍候...);
pDialog.setIndeterminate(假);
pDialog.setCancelable(真正的);
pDialog.show();
}
/ **
*获取产品信息的后台线程
* * /
保护字符串doInBackground(字符串... PARAMS){
//从后台线程更新UI
runOnUiThread(新的Runnable(){
公共无效的run(){
//检查成功标签
诠释成功;
尝试 {
//大厦参数
名单<的NameValuePair> PARAMS =新的ArrayList<的NameValuePair>();
params.add(新BasicNameValuePair(PID,PID));
//获取产品的详细信息通过HTTP请求
//注意产品细节的URL会使用GET请求
JSONObject的JSON = jsonParser.makeHtt prequest(
url_product_detials,GET,则params);
//检查你的日志,JSON响应
Log.d(单一产品详细信息,json.toString());
// json的成功标签
成功= json.getInt(TAG_SUCCESS);
如果(成功== 1){
//成功接收产品的详细信息
JSONArray productObj = JSON
.getJSONArray(TAG_PRODUCT); // JSON数组
//从JSON数组的第一个产品对象
的JSONObject产物= productObj.getJSONObject(0);
//产品,该PID发现
//编辑文本
txtName的=(的TextView)findViewById(R.id.textView3);
在EditText上//显示产品数据
txtName.setText(product.getString(TAG_DESCRIPTION));
}其他{
//没有找到产品与PID
}
}赶上(JSONException E){
e.printStackTrace();
}
}
});
返回null;
}
/ **
*在完成后台任务之后关闭该进度对话框
* ** /
保护无效onPostExecute(字符串file_url){
//关闭该对话框,一旦得到了所有细节
pDialog.dismiss();
}
}
}
php文件
< PHP
/ *
*按照code将获得单品细节
*一个产品是由产品ID标识(PID)
* /
//数组JSON响应
$响应=阵列();
//其中包括DB连接类
require_once __DIR__。 /db_connect.php;
//连接到数据库
$ DB =新DB_CONNECT();
//检查后数据
如果(使用isset($ _ GET [PID])){
$ PID = $ _GET ['PID'];
//从产品表中的产品
$结果= mysql_query(SELECT * FROM prediction其中pid = $ PID);
如果(!空($结果)){
//检查空结果
如果(mysql_num_rows($结果)大于0){
$结果= mysql_fetch_array($结果);
$产品=阵列();
$产品[PID] = $结果[PID];
$产品[数量] = $结果[编号];
// $产品[价格] = $结果[价格];
$产品[说明] = $结果[说明]。
$产品[created_at] = $结果[created_at];
$产品[的updated_at] = $结果[的updated_at];
// 成功
$响应[成功] = 1;
//用户节点
$响应[产品] =阵列();
array_push($响应[产品],$产品);
//呼应JSON响应
回声json_en code($响应);
} 其他 {
//没有产品找到
$响应[成功] = 0;
$响应[信息] =没有产品找到;
//回声没有用户JSON
回声json_en code($响应);
}
} 其他 {
//没有产品找到
$响应[成功] = 0;
$响应[信息] =没有产品找到;
//回声没有用户JSON
回声json_en code($响应);
}
} 其他 {
//必填字段缺失
$响应[成功] = 0;
$响应[信息] =必填字段(S)丢失;
我的logcat
11月11日至五号:44:12.701:E / AndroidRuntime(7643):在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
11月11日至5日:44:12.701:E / AndroidRuntime(7643):在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
11月11日至5日:44:12.701:E / AndroidRuntime(7643):在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
11月11日至5日:44:12.701:E / AndroidRuntime(7643):在com.example.numero.JSONParser.makeHtt prequest(JSONParser.java:63)
11月11日至5日:44:12.701:E / AndroidRuntime(7643):在com.example.numero.FirstResult $ GetProductDetails $ 1.运行(FirstResult.java:105)
11月11日至5日:44:12.701:E / AndroidRuntime(7643):在android.os.Handler.handleCallback(Handler.java:725)
11月11日至5日:44:12.701:E / AndroidRuntime(7643):在android.os.Handler.dispatchMessage(Handler.java:92)
11月11日至5日:44:12.701:E / AndroidRuntime(7643):在android.os.Looper.loop(Looper.java:137)
11月11日至5日:44:12.701:E / AndroidRuntime(7643):在android.app.ActivityThread.main(ActivityThread.java:5041)
11月11日至5日:44:12.701:E / AndroidRuntime(7643):在java.lang.reflect.Method.invokeNative(本机方法)
11月11日至5日:44:12.701:E / AndroidRuntime(7643):在java.lang.reflect.Method.invoke(Method.java:511)
11月11日至5日:44:12.701:E / AndroidRuntime(7643):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:793)
11月11日至5日:44:12.701:E / AndroidRuntime(7643):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
11月11日至5日:44:12.701:E / AndroidRuntime(7643):在dalvik.system.NativeStart.main(本机方法)
11月11日至5日:52:08.052:E /跟踪(7805):错误打开跟踪文件:没有这样的文件或目录(2)
11月11日至5日:56:14.171:E / AndroidRuntime(7805):致命异常:主要
11月11日至5日:56:14.171:E / AndroidRuntime(7805):android.os.NetworkOnMainThreadException
11月11日至5日:56:14.171:E / AndroidRuntime(7805):在android.os.StrictMode $ AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
11月11日至5日:56:14.171:E / AndroidRuntime(7805):在java.net.InetAddress.lookupHostByName(InetAddress.java:385)
11月11日至5日:56:14.171:E / AndroidRuntime(7805):在java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
11月11日至5日:56:14.171:E / AndroidRuntime(7805):在java.net.InetAddress.getAllByName(InetAddress.java:214)
11月11日至5日:56:14.171:E / AndroidRuntime(7805):在org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
11月11日至5日:56:14.171:E / AndroidRuntime(7805):在org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
11月11日至5日:56:14.171:E / AndroidRuntime(7805):在org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
11月11日至5日:56:14.171:E / AndroidRuntime(7805):在org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
11月11日至5日:56:14.171:E / AndroidRuntime(7805):在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
11月11日至5日:56:14.171:E / AndroidRuntime(7805):在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
11月11日至5日:56:14.171:E / AndroidRuntime(7805):在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
11月11日至5日:56:14.171:E / AndroidRuntime(7805):在com.example.numero.JSONParser.makeHtt prequest(JSONParser.java:63)
11月11日至5日:56:14.171:E / AndroidRuntime(7805):在com.example.numero.FirstResult $ GetProductDetails $ 1.运行(FirstResult.java:105)
11月11日至5日:56:14.171:E / AndroidRuntime(7805):在android.os.Handler.handleCallback(Handler.java:725)
11月11日至5日:56:14.171:E / AndroidRuntime(7805):在android.os.Handler.dispatchMessage(Handler.java:92)
11月11日至5日:56:14.171:E / AndroidRuntime(7805):在android.os.Looper.loop(Looper.java:137)
11月11日至5日:56:14.171:E / AndroidRuntime(7805):在android.app.ActivityThread.main(ActivityThread.java:5041)
11月11日至5日:56:14.171:E / AndroidRuntime(7805):在java.lang.reflect.Method.invokeNative(本机方法)
11月11日至5日:56:14.171:E / AndroidRuntime(7805):在java.lang.reflect.Method.invoke(Method.java:511)
11月11日至5日:56:14.171:E / AndroidRuntime(7805):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:793)
11月11日至5日:56:14.171:E / AndroidRuntime(7805):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
11月11日至5日:56:14.171:E / AndroidRuntime(7805):在dalvik.system.NativeStart.main(本机方法)
11月11日至5日:56:25.961:E /跟踪(7893):错误打开跟踪文件:没有这样的文件或目录(2)
runOnUiThread(新的Runnable(){
@覆盖
公共无效的run()
{
// TODO自动生成方法存根
尝试 {
txt3.setText(product.getString(TAG_DESCRIPTION));
}赶上(JSONException E){
// TODO自动生成的catch块
e.printStackTrace();
}
}
});
}其他{
//没有找到产品与PID
}
在
添加此行 /得到JSON数组的第一个产品对象
的JSONObject产物= productObj.getJSONObject(0);
//产品,该PID发现
//编辑文本
txtName的=(的TextView)findViewById(R.id.textView3);
这将解决这个问题
I am developing an android app... where I developed a table in MySql and table has certain results for values of 1-10 and all the values are entered seperately ...
in my android application when a particular value is displayed the result of that value has to be taken from the table... but it is not working correctly ...the message is getting like 'unfortunately application closed'... i am adding my code here... please check the code and if found any mistake pls help.....
Activity.java
public class FirstResult extends Activity
{
String pid;
TextView txtName;
// Progress Dialog
private ProgressDialog pDialog;
// JSON parser class
JSONParser jsonParser = new JSONParser();
// single product url
private static final String url_product_detials = "http://iascpl.com/app/get_product_details.php";
// JSON Node names
private static final String TAG_SUCCESS = "success";
private static final String TAG_PRODUCT = "product";
//private static final String TAG_PID = "pid";
//private static final String TAG_NUMBER = "number";
//private static final String TAG_PRICE = "price";
private static final String TAG_DESCRIPTION = "description";
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.firstresult_xm);
TextView txt1 = (TextView) findViewById (R.id.textView2);
txt1.setText(getIntent().getStringExtra("name10"));
pid = txt1.getText().toString();
new GetProductDetails().execute();
}
/**
* Background Async Task to Get complete product details
* */
class GetProductDetails extends AsyncTask<String, String, String> {
/**
* Before starting background thread Show Progress Dialog
* */
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(FirstResult.this);
pDialog.setMessage("Loading product details. Please wait...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
/**
* Getting product details in background thread
* */
protected String doInBackground(String... params) {
// updating UI from Background Thread
runOnUiThread(new Runnable() {
public void run() {
// Check for success tag
int success;
try {
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("pid", pid));
// getting product details by making HTTP request
// Note that product details url will use GET request
JSONObject json = jsonParser.makeHttpRequest(
url_product_detials, "GET", params);
// check your log for json response
Log.d("Single Product Details", json.toString());
// json success tag
success = json.getInt(TAG_SUCCESS);
if (success == 1) {
// successfully received product details
JSONArray productObj = json
.getJSONArray(TAG_PRODUCT); // JSON Array
// get first product object from JSON Array
JSONObject product = productObj.getJSONObject(0);
// product with this pid found
// Edit Text
txtName = (TextView) findViewById(R.id.textView3);
// display product data in EditText
txtName.setText(product.getString(TAG_DESCRIPTION));
}else{
// product with pid not found
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
return null;
}
/**
* After completing background task Dismiss the progress dialog
* **/
protected void onPostExecute(String file_url) {
// dismiss the dialog once got all details
pDialog.dismiss();
}
}
}
php file
<?php
/*
* Following code will get single product details
* A product is identified by product id (pid)
*/
// array for JSON response
$response = array();
// include db connect class
require_once __DIR__ . '/db_connect.php';
// connecting to db
$db = new DB_CONNECT();
// check for post data
if (isset($_GET["pid"])) {
$pid = $_GET['pid'];
// get a product from products table
$result = mysql_query("SELECT *FROM prediction WHERE pid = $pid");
if (!empty($result)) {
// check for empty result
if (mysql_num_rows($result) > 0) {
$result = mysql_fetch_array($result);
$product = array();
$product["pid"] = $result["pid"];
$product["number"] = $result["number"];
// $product["price"] = $result["price"];
$product["description"] = $result["description"];
$product["created_at"] = $result["created_at"];
$product["updated_at"] = $result["updated_at"];
// success
$response["success"] = 1;
// user node
$response["product"] = array();
array_push($response["product"], $product);
// echoing JSON response
echo json_encode($response);
} else {
// no product found
$response["success"] = 0;
$response["message"] = "No product found";
// echo no users JSON
echo json_encode($response);
}
} else {
// no product found
$response["success"] = 0;
$response["message"] = "No product found";
// echo no users JSON
echo json_encode($response);
}
} else {
// required field is missing
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";
my Logcat
11-05 11:44:12.701: E/AndroidRuntime(7643): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
11-05 11:44:12.701: E/AndroidRuntime(7643): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
11-05 11:44:12.701: E/AndroidRuntime(7643): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
11-05 11:44:12.701: E/AndroidRuntime(7643): at com.example.numero.JSONParser.makeHttpRequest(JSONParser.java:63)
11-05 11:44:12.701: E/AndroidRuntime(7643): at com.example.numero.FirstResult$GetProductDetails$1.run(FirstResult.java:105)
11-05 11:44:12.701: E/AndroidRuntime(7643): at android.os.Handler.handleCallback(Handler.java:725)
11-05 11:44:12.701: E/AndroidRuntime(7643): at android.os.Handler.dispatchMessage(Handler.java:92)
11-05 11:44:12.701: E/AndroidRuntime(7643): at android.os.Looper.loop(Looper.java:137)
11-05 11:44:12.701: E/AndroidRuntime(7643): at android.app.ActivityThread.main(ActivityThread.java:5041)
11-05 11:44:12.701: E/AndroidRuntime(7643): at java.lang.reflect.Method.invokeNative(Native Method)
11-05 11:44:12.701: E/AndroidRuntime(7643): at java.lang.reflect.Method.invoke(Method.java:511)
11-05 11:44:12.701: E/AndroidRuntime(7643): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
11-05 11:44:12.701: E/AndroidRuntime(7643): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
11-05 11:44:12.701: E/AndroidRuntime(7643): at dalvik.system.NativeStart.main(Native Method)
11-05 11:52:08.052: E/Trace(7805): error opening trace file: No such file or directory (2)
11-05 11:56:14.171: E/AndroidRuntime(7805): FATAL EXCEPTION: main
11-05 11:56:14.171: E/AndroidRuntime(7805): android.os.NetworkOnMainThreadException
11-05 11:56:14.171: E/AndroidRuntime(7805): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
11-05 11:56:14.171: E/AndroidRuntime(7805): at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
11-05 11:56:14.171: E/AndroidRuntime(7805): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
11-05 11:56:14.171: E/AndroidRuntime(7805): at java.net.InetAddress.getAllByName(InetAddress.java:214)
11-05 11:56:14.171: E/AndroidRuntime(7805): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
11-05 11:56:14.171: E/AndroidRuntime(7805): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
11-05 11:56:14.171: E/AndroidRuntime(7805): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
11-05 11:56:14.171: E/AndroidRuntime(7805): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
11-05 11:56:14.171: E/AndroidRuntime(7805): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
11-05 11:56:14.171: E/AndroidRuntime(7805): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
11-05 11:56:14.171: E/AndroidRuntime(7805): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
11-05 11:56:14.171: E/AndroidRuntime(7805): at com.example.numero.JSONParser.makeHttpRequest(JSONParser.java:63)
11-05 11:56:14.171: E/AndroidRuntime(7805): at com.example.numero.FirstResult$GetProductDetails$1.run(FirstResult.java:105)
11-05 11:56:14.171: E/AndroidRuntime(7805): at android.os.Handler.handleCallback(Handler.java:725)
11-05 11:56:14.171: E/AndroidRuntime(7805): at android.os.Handler.dispatchMessage(Handler.java:92)
11-05 11:56:14.171: E/AndroidRuntime(7805): at android.os.Looper.loop(Looper.java:137)
11-05 11:56:14.171: E/AndroidRuntime(7805): at android.app.ActivityThread.main(ActivityThread.java:5041)
11-05 11:56:14.171: E/AndroidRuntime(7805): at java.lang.reflect.Method.invokeNative(Native Method)
11-05 11:56:14.171: E/AndroidRuntime(7805): at java.lang.reflect.Method.invoke(Method.java:511)
11-05 11:56:14.171: E/AndroidRuntime(7805): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
11-05 11:56:14.171: E/AndroidRuntime(7805): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
11-05 11:56:14.171: E/AndroidRuntime(7805): at dalvik.system.NativeStart.main(Native Method)
11-05 11:56:25.961: E/Trace(7893): error opening trace file: No such file or directory (2)
runOnUiThread(new Runnable() {
@Override
public void run()
{
// TODO Auto-generated method stub
try {
txt3.setText(product.getString(TAG_DESCRIPTION));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}else{
// product with pid not found
}
add this line after
/ get first product object from JSON Array
JSONObject product = productObj.getJSONObject(0);
// product with this pid found
// Edit Text
txtName = (TextView) findViewById(R.id.textView3);
that will solve the issue
这篇关于安卓得到MySQL表数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!