Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
push007
0 / 0 / 0
Регистрация: 20.03.2015
Сообщений: 121
#1

Делаю удаленную базу Android-Php-MySql - Android

23.07.2015, 17:05. Просмотров 442. Ответов 5
Метки нет (Все метки)

Здравствуйте! Я нашел эти кода из уроков devcolibri.com
db_connect.php
Кликните здесь для просмотра всего текста
PHP
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
<?php
 
class DB_CONNECT {
 
    function __construct() {
        $this->connect();
    }
 
    function __destruct() {
        $this->close();
    }
 
    function connect() {
        require 'db_config.php';
 
        $con = mysql_connect(DB_SERVER, DB_USER, DB_PASSWORD) or die(mysql_error());
 
        $db = mysql_select_db(DB_DATABASE) or die(mysql_error()) or die(mysql_error());
 
        return $con;
    }
 
    function close() {
        mysql_close();
    }
 
}
?>


get_all_products.php
Кликните здесь для просмотра всего текста
PHP
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
33
<?php
 
$response = array();
 
require 'db_connect.php';
 
$db = new DB_CONNECT();
 
$result = mysql_query("SELECT *FROM products") or die(mysql_error());
 
if (mysql_num_rows($result) > 0) {
    $response["products"] = array();
 
    while ($row = mysql_fetch_array($result)) {
        $product = array();
        $product["pid"] = $row["pid"];
        $product["name"] = $row["name"];
        $product["price"] = $row["price"];
        $product["created_at"] = $row["created_at"];
        $product["updated_at"] = $row["updated_at"];
 
        array_push($response["products"], $product);
    }
    $response["success"] = 1;
 
    echo json_encode($response);
} else {
    $response["success"] = 0;
    $response["message"] = "No products found";
 
    echo json_encode($response);
}
?>

db_config.php
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
<?php 
    define('DB_USER', "android_user"); //логин админа БД
    define('DB_PASSWORD', "12345"); // пароль админа БД
    define('DB_DATABASE', "dbandroid"); // база данных
    define('DB_SERVER', "127.0.0.1"); // сервер 'localhost'
?>

AllProductsActivity.java
Кликните здесь для просмотра всего текста
Java
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
package com.acs.meetingkzorda.app.androidmysql;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
 
import android.widget.*;
import com.acs.meetingkzorda.app.parser.JSONParser;
import org.apache.http.NameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
 
import android.app.ListActivity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView.OnItemClickListener;
 
public class AllProductsActivity extends ListActivity {
 
    private ProgressDialog pDialog;
 
    // Создаем JSON парсер
    JSONParser jParser = new JSONParser();
 
    ArrayList<HashMap<String, String>> productsList;
 
    // url получения списка всех продуктов
    private static String url_all_products = "http://meeting.kz/get_all_products.php";
 
    // JSON Node names
    private static final String TAG_SUCCESS = "success";
    private static final String TAG_PRODUCTS = "products";
    private static final String TAG_PID = "pid";
    private static final String TAG_NAME = "name";
 
    // тут будет хранится список продуктов
    JSONArray products = null;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.all_products);
 
        // Hashmap for ListView
        productsList = new ArrayList<HashMap<String, String>>();
 
        // Загружаем продукты в фоновом потоке
        new LoadAllProducts().execute();
 
        // получаем ListView
        ListView lv = getListView();
 
        // на выбор одного продукта
        // запускается Edit Product Screen
        lv.setOnItemClickListener(new OnItemClickListener() {
 
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                // getting values from selected ListItem
                String pid = ((TextView) view.findViewById(R.id.pid)).getText()
                        .toString();
 
                // Запускаем новый intent который покажет нам Activity
                Intent in = new Intent(getApplicationContext(), EditProductActivity.class);
                // отправляем pid в следующий activity
                in.putExtra(TAG_PID, pid);
 
                // запуская новый Activity ожидаем ответ обратно
                startActivityForResult(in, 100);
            }
        });
 
    }
 
    // Ответ из Edit Product Activity
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        // если результующий код равен 100
        if (resultCode == 100) {
            // если полученный код результата равен 100
            // значит пользователь редактирует или удалил продукт
            // тогда мы перезагружаем этот экран
            Intent intent = getIntent();
            finish();
            startActivity(intent);
        }
 
    }
 
    /**
     * Фоновый Async Task для загрузки всех продуктов по HTTP запросу
     * */
    class LoadAllProducts extends AsyncTask<String, String, String> {
 
        /**
         * Перед началом фонового потока Show Progress Dialog
         * */
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(AllProductsActivity.this);
            pDialog.setMessage("Загрузка продуктов. Подождите...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(false);
            pDialog.show();
        }
 
        /**
         * Получаем все продукт из url
         * */
        protected String doInBackground(String... args) {
            // Будет хранить параметры
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            // получаем JSON строк с URL
            JSONObject json;
            json = jParser.makeHttpRequest(url_all_products, "GET", params);
 
            Log.d("All Products: ", json.toString());
 
            try {
                // Получаем SUCCESS тег для проверки статуса ответа сервера
                int success = json.getInt(TAG_SUCCESS);
 
                if (success == 1) {
                    // продукт найден
                    // Получаем масив из Продуктов
                    products = json.getJSONArray(TAG_PRODUCTS);
 
                    // перебор всех продуктов
                    for (int i = 0; i < products.length(); i++) {
                        JSONObject c = products.getJSONObject(i);
 
                        // Сохраняем каждый json елемент в переменную
                        String id = c.getString(TAG_PID);
                        String name = c.getString(TAG_NAME);
 
                        // Создаем новый HashMap
                        HashMap<String, String> map = new HashMap<String, String>();
 
                        // добавляем каждый елемент в HashMap ключ => значение
                        map.put(TAG_PID, id);
                        map.put(TAG_NAME, name);
 
                        // добавляем HashList в ArrayList
                        productsList.add(map);
                    }
                } else {
                    Toast toast = Toast.makeText(getApplicationContext(),"Привет",Toast.LENGTH_LONG);
                    toast.show();
                    // продукт не найден
                    // Запускаем Add New Product Activity
                    Intent i = new Intent(getApplicationContext(),
                            NewProductActivity.class);
                    // Закрытие всех предыдущие activities
                    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    startActivity(i);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
 
            return null;
        }
 
        /**
         * После завершения фоновой задачи закрываем прогрес диалог
         * **/
        protected void onPostExecute(String file_url) {
            // закрываем прогресс диалог после получение все продуктов
            pDialog.dismiss();
            // обновляем UI форму в фоновом потоке
            runOnUiThread(new Runnable() {
                public void run() {
                    /**
                     * Обновляем распарсенные JSON данные в ListView
                     * */
                    ListAdapter adapter = new SimpleAdapter(
                            AllProductsActivity.this, productsList,
                            R.layout.list_item, new String[] { TAG_PID,
                            TAG_NAME},
                            new int[] { R.id.pid, R.id.name });
                    // обновляем listview
                    setListAdapter(adapter);
                }
            });
 
        }
 
    }
 
}

MainScreenActivity.java
Кликните здесь для просмотра всего текста
Java
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
33
34
35
36
37
38
package com.acs.meetingkzorda.app.androidmysql;
 
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
 
 
/**
 * Created by Push on 23.07.2015.
 */
public class MainScreenActivity extends Activity {
 
    Button btnViewProducts;
//    Button btnNewProduct;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_screen);
 
//        btnNewProduct  = (Button) findViewById(R.id.btnViewProducts);
        btnViewProducts = (Button) findViewById(R.id.btnViewProducts);
 
        //обработчик на нажатия кнопки View Products
        btnViewProducts.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //Запускаем Activity вывода всех продуктов
                Intent i = new Intent(getApplicationContext(), AllProductsActivity.class);
                startActivity(i);
            }
        });
 
 
    }
}



JSONParser.java
Кликните здесь для просмотра всего текста
Java
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package com.acs.meetingkzorda.app.parser;
 
import android.util.Log;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;
 
import java.io.*;
import java.util.List;
 
public class JSONParser {
 
    static InputStream is = null;
    static JSONObject jObj = null;
    static String json = "";
 
    // constructor
    public JSONParser() {
 
    }
 
    // function get json from url
// by making HTTP POST or GET method
    public JSONObject makeHttpRequest(String url, String method,
                                      List params) {
 
// Making HTTP request
        try {
 
// check for request method
            if(method == "POST"){
// request method is POST
// defaultHttpClient
                DefaultHttpClient httpClient = new DefaultHttpClient();
                HttpPost httpPost = new HttpPost(url);
                httpPost.setEntity(new UrlEncodedFormEntity (params));
 
                HttpResponse httpResponse = httpClient.execute(httpPost);
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();
 
            }else if(method == "GET"){
// request method is GET
                DefaultHttpClient httpClient = new DefaultHttpClient();
                String paramString = URLEncodedUtils.format (params, "utf-8");
                url += "?" + paramString;
                HttpGet httpGet = new HttpGet(url);
 
                HttpResponse httpResponse = httpClient.execute(httpGet);
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();
            }
 
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
 
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader (
                    is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            json = sb.toString();
        } catch (Exception e) {
            Log.e ("Buffer Error", "Error converting result" + e.toString ());
        }
 
// try parse the string to a JSON object
        try {
            jObj = new JSONObject (json);
        } catch (JSONException e) {
            Log.e("JSON Parser", "Error parsing data" + e.toString());
        }
 
// return JSON String
        return jObj;
 
    }
}


И при нажатие на кнопки выходить Unfortunately, AndroidAndMySQL has stopped. В чем проблема? Или есть у кого нибудь похожи и рабочий пример. Помогите я сам новичок!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.07.2015, 17:05     Делаю удаленную базу Android-Php-MySql
Посмотрите здесь:

Подключение к MySQL на Android Android
Android Удалённая база данных MySQL, php, android
Android MySQL + Android (Eclipse)
MySQL для работы с android-приложением Android
Android и удалённая MySQL Android
MySql (jdbc) и android (eclipse) Android
Android Android MySQL в листвью
MySQL через JSON в Android Studio Android
Android+php+MySQL Android
Android подключение к mysql! Android
Android Подключение к удаленной бд MySQL в Android
Android Studio Как подключить свою базу данных Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
chizz
979 / 493 / 54
Регистрация: 19.03.2013
Сообщений: 3,074
Записей в блоге: 18
Завершенные тесты: 1
23.07.2015, 17:13     Делаю удаленную базу Android-Php-MySql #2
В манифесте AllProductsActivity прописан?
Разрешения (permissions) на доступ в интернет в манифесте прописаны?

http://developer.android.com/guide/t...est-intro.html
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 835
23.07.2015, 17:14     Делаю удаленную базу Android-Php-MySql #3
лог в студию
push007
0 / 0 / 0
Регистрация: 20.03.2015
Сообщений: 121
24.07.2015, 07:05  [ТС]     Делаю удаленную базу Android-Php-MySql #4
chizz, вот manifest
Кликните здесь для просмотра всего текста
XML
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
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.acs.meetingkzorda.app.androidmysql"
    android:versionCode="1"
    android:versionName="1.0">
    <uses-sdk android:minSdkVersion="8"/>
 
 
    <application android:allowBackup="true"
        android:label="@string/app_name"
        android:icon="@drawable/ic_launcher"
        android:theme="@style/AppTheme">
 
        <activity android:name=".MainScreenActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
 
        <!-- All Product Activity -->
        <activity android:name=".AllProductsActivity"
                  android:label="All Products"/>
 
    </application>
    
    <!-- Internet Permision -->
    <uses-permission android:name="android.permission.INTERNET" />
</manifest>


Добавлено через 28 минут
androbro,
Кликните здесь для просмотра всего текста
07-24 03:52:13.209 1204-1204/com.acs.meetingkzorda.app W/EGL_genymotion﹕ eglSurfaceAttrib not implemented
07-24 03:52:53.325 1204-1204/com.acs.meetingkzorda.app W/EGL_genymotion﹕ eglSurfaceAttrib not implemented
07-24 03:52:53.377 1204-1204/com.acs.meetingkzorda.app W/EGL_genymotion﹕ eglSurfaceAttrib not implemented
07-24 03:52:55.548 1204-1224/com.acs.meetingkzorda.app E/JSON Parser﹕ Error parsing dataorg.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject
07-24 03:52:55.552 1204-1224/com.acs.meetingkzorda.app W/dalvikvm﹕ threadid=10: thread exiting with uncaught exception (group=0xa61ac908)
07-24 03:52:55.652 1204-1224/com.acs.meetingkzorda.app E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:299)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
at java.util.concurrent.FutureTask.run(FutureTask.java:239)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:856)
Caused by: java.lang.NullPointerException
at com.acs.meetingkzorda.app.androidmysql.AllProductsActivity$LoadAllProducts.doInBackground(AllProductsActivity.java:125)
at com.acs.meetingkzorda.app.androidmysql.AllProductsActivity$LoadAllProducts.doInBackground(AllProductsActivity.java:100)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask.run(FutureTask.java:234)
************at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
************at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
************at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
************at java.lang.Thread.run(Thread.java:856)
07-24 03:52:56.720 1204-1204/com.acs.meetingkzorda.app W/EGL_genymotion﹕ eglSurfaceAttrib not implemented
07-24 03:52:57.344 1204-1204/com.acs.meetingkzorda.app E/WindowManager﹕ Activity com.acs.meetingkzorda.app.androidmysql.AllProductsActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{53513c2c V.E..... R......D 0,0-729,192} that was originally added here
android.view.WindowLeaked: Activity com.acs.meetingkzorda.app.androidmysql.AllProductsActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{53513c2c V.E..... R......D 0,0-729,192} that was originally added here
at android.view.ViewRootImpl.<init>(ViewRootImpl.java:354)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:216)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
at android.app.Dialog.show(Dialog.java:281)
at com.acs.meetingkzorda.app.androidmysql.AllProductsActivity$LoadAllProducts.onPreExecute(AllProductsActivity.java:112)
at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)
at android.os.AsyncTask.execute(AsyncTask.java:534)
at com.acs.meetingkzorda.app.androidmysql.AllProductsActivity.onCreate(AllProductsActivity.java:53)
at android.app.Activity.performCreate(Activity.java:5104)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)


Добавлено через 11 минут
chizz, androbro, еще в allproductactivity говорить NameValuePair устаревшим
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 835
24.07.2015, 09:17     Делаю удаленную базу Android-Php-MySql #5
push007, ну изначально тут
Java
1
 Log.d("All Products: ", json.toString());
ловим NPE, следовательно json == null
и это потому что
"Error parsing dataorg.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject"
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
24.07.2015, 10:06     Делаю удаленную базу Android-Php-MySql #6
Подсказанное комрадом androbro - это только начала вашего конца, судя по тому, что у вас накручено в doInBackground().
Советую заранее перечитать (а желательно и вникнуть) соответствующие темы мануала и хворумов - то ли еще будет
Yandex
Объявления
24.07.2015, 10:06     Делаю удаленную базу Android-Php-MySql
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru