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

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

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

Делаю удаленную базу Android-Php-MySql - Программирование Android

23.07.2015, 17:05. Просмотров 468. Ответов 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. В чем проблема? Или есть у кого нибудь похожи и рабочий пример. Помогите я сам новичок!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.07.2015, 17:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Делаю удаленную базу Android-Php-MySql (Программирование Android):

Android+php+MySQL - Программирование Android
Я с помощью php-скрипта получаю данные код &quot;приема&quot; такой JSONObject json = jParser.makeHttpRequest(url_all_students, &quot;GET&quot;,...

Удалённая база данных MySQL, php, android - Программирование Android
Имеется БД MySQL с таблицей: == Структура таблицы Feld |------ |Поле|Тип|Null|По умолчанию |------ |//**FID**//|int(11)|Нет| ...

MySQL и Android - Программирование Android
У меня есть сервер phpmyadmin, я хочу подключиться к нему с Android ввожу все правильно, но Android мне пишет: access failed for user 'мой...

Android Studio Как подключить свою базу данных - Программирование Android
База данных *.sqlite Нужна помощь гуру, как образом это реализуется, не обязательно код, хотя бы объяснения

Android MySQL в листвью - Программирование Android
Добрый день. Рылся по инету но не нашёл рабочего аналога. Те что скачал (2шт) не заработали после моей доработки) Цель проста - есть...

Android подключение к mysql! - Программирование Android
Доброго времени суток! проблема вот в чем, нужно подключится к удаленной базе посредством программы и произвести поиск и фильтрацию но...

5
chizz
980 / 495 / 54
Регистрация: 19.03.2013
Сообщений: 3,093
Записей в блоге: 18
Завершенные тесты: 1
23.07.2015, 17:13 #2
В манифесте AllProductsActivity прописан?
Разрешения (permissions) на доступ в интернет в манифесте прописаны?

http://developer.android.com/guide/t...est-intro.html
0
androbro
326 / 287 / 61
Регистрация: 17.10.2014
Сообщений: 846
23.07.2015, 17:14 #3
лог в студию
0
push007
0 / 0 / 0
Регистрация: 20.03.2015
Сообщений: 121
24.07.2015, 07:05  [ТС] #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 устаревшим
0
androbro
326 / 287 / 61
Регистрация: 17.10.2014
Сообщений: 846
24.07.2015, 09:17 #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"
1
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
24.07.2015, 10:06 #6
Подсказанное комрадом androbro - это только начала вашего конца, судя по тому, что у вас накручено в doInBackground().
Советую заранее перечитать (а желательно и вникнуть) соответствующие темы мануала и хворумов - то ли еще будет
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2015, 10:06
Привет! Вот еще темы с ответами:

MySQL + Android (Eclipse) - Программирование Android
Доброго дня всем. Прощу сразу не кидать в меня камни. Честно в программировании на Android я еще даже не новичок. Итак, вопрос пока...

Android и удалённая MySQL - Программирование Android
Помогите разобраться, как вообще подключатся и работать с удалённой бд mysql? Почитал на форуме, погуглил, мало инфы, либо не совсем...

Подключение к MySQL на Android - Программирование Android
Доброе утро! Подскажите пожалуйста способы коннекта к MySQL в разработке приложений на android. Покопался по форумам, гуглу, нашёл...

MySql (jdbc) и android (eclipse) - Программирование Android
Суть вопроса в том, что есть приложение для Андроида. Приложение служит для выполнение простейшего запроса и вывода результата запроса на...


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

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
24.07.2015, 10:06
Ответ Создать тему
Опции темы

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