sql >> データベース >  >> RDS >> Mysql

Androidアプリにデータをプッシュする

    AsyncTaskは、Androidが提供する抽象クラスであり、UIスレッドを適切に使用するのに役立ちます。このクラスを使用すると、スレッドを操作しなくても、長い/バックグラウンド操作を実行して、その結果をUIスレッドに表示できます。

    AsyncTaskを使用してWebサービスを呼び出すことができます:

    private class LongOperation extends AsyncTask<String, Void, String> {
    
        @Override
        protected String doInBackground(String... params) {
                try {
                    //call your webservice to perform MySQL database opration
                    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                        .permitAll().build();
                    StrictMode.setThreadPolicy(policy);
                    HttpClient httpclient = new DefaultHttpClient();
                    HttpGet httpget = new Http Get("http://yourserver.com/webservices/service.php?id="
                        + URLEncoder.encode("record_id") +"&param1="
                        + URLEncoder.encode("param1 value") + "&param2="+ URLEncoder.encode("param2 value"));
    
                    HttpResponse response = httpclient.execute(httpget);
                    final String str=EntityUtils.toString(response.getEntity());
    
                    myjson = new JSONObject(str);
                    //perform JSON parsing to get webservice result.
                    if (myjson.has("success") == true) {
                        //Updation is succesful
    
                    } else {
                        //failed to perform updation
    
                    }
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            return "Executed";
        }
    
        @Override
        protected void onPostExecute(String result) {
            // This will be executed after completion of webservice call. and `String result` will have returned value from doInBackground()
            // might want to change "executed" for the returned string passed
            // into onPostExecute() but that is upto you
    
        }
    
        @Override
        protected void onPreExecute() {}
    
        @Override
        protected void onProgressUpdate(Void... values) {}
    }
    

    ここで、LongOperationのオブジェクトを作成してWebサービス呼び出しを実行します クラス、

    LongOperation webCall = new LongOperation();
    webCall.execute();
    

    PHPでは、次のように書く必要があります。

    <?php
    
    //DB Connection code:
    $dbhost = "server";
    $dbuser = "user_name";
    $dbpassword = "pass";
    $database = "your_db";
    
    // connect to the database
    $db = mysql_connect($dbhost, $dbuser, $dbpassword) or die("Connection Error: ".mysql_error());
    mysql_select_db($database, $db) or die("Error conecting to db.");
    
    header("Content-type: text/json");
    
    if (!isset($_GET['id']) || $_GET['id'] == "" ||!isset($_GET['param1']) || $_GET['param1'] == "" || !isset($_GET['param2']) || $_GET['param2'] == "" ){
        echo json_encode(array('error' => 'Required arguments missing.'));
        exit;
    }
    $id = mysql_real_escape_string($_GET['id']); //escape string to prevent SQL injection attack.
    $param1 = mysql_real_escape_string($_GET['param1']);
    $param2 = mysql_real_escape_string($_GET['param2']);
    
    $sql = "update your_table set param1='$param1',param2='$param2' where id=$id";
    
    mysql_query($sql);
    
    if (mysql_affected_rows()==1) {
        echo json_encode(array('success' => "updated"));
    }else{
        echo json_encode(array('error' => "not updated"));
    }
    ?>
    

    POSTメソッドを使用してパラメーターをWebサービスに渡し、Webサービスをより安全にすることができます。 :)




    1. テーブルステータスを表示し、テーブル内の正確な行を表示しますか?

    2. スプリングブートjpahibernateで>4<24の後にDbへの接続が切断される

    3. DAY()の例– MySQL

    4. JPAで2つの日付の間の日数をカウントします