2016-12-04 3 views
2

私はアンドロイド開発で新しく、私はMySQLデータベースにコールログの詳細を挿入したい、ここではリストビューで設定されていない単純なArrayAdapterを作成し、2番目はMySQLサーバにデータを挿入する方法です。ここでArrayAdapter(Java)を使用してMySQLサーバにデータを挿入するには?

私のJavaコードここ

public class MainActivity extends Activity { 
ListView listView; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    listView = (ListView) findViewById(R.id.lv); 
    getCallDetails(); 
} 
private void getCallDetails() 
{ 
    StringBuffer sb = new StringBuffer(); 
    String strOrder = android.provider.CallLog.Calls.DATE + " DESC"; 
    Cursor managedCursor = managedQuery(CallLog.Calls.CONTENT_URI, null,null, null, strOrder); 
    int number1 = managedCursor.getColumnIndex(CallLog.Calls.NUMBER); 
    int type1 = managedCursor.getColumnIndex(CallLog.Calls.TYPE); 
    int duration1 = managedCursor.getColumnIndex(CallLog.Calls.DURATION); 
    sb.append("Call Log :"); 
    while (managedCursor.moveToNext()) 
    { 
     final String number = managedCursor.getString(number1); 
     final String type2 = managedCursor.getString(type1); 
     final String date = managedCursor.getString(managedCursor.getColumnIndexOrThrow("date")).toString(); 
     java.util.Date date1 = new java.util.Date(Long.valueOf(date)); 
     final String duration = managedCursor.getString(duration1); 
     String type = null; 
     final String fDate = date1.toString(); 
     int callcode = Integer.parseInt(type2); 
     switch (callcode) 
     { 
      case CallLog.Calls.OUTGOING_TYPE: 
       type = "Outgoing"; 
       break; 
      case CallLog.Calls.INCOMING_TYPE: 
       type = "Incoming"; 
       break; 
      case CallLog.Calls.MISSED_TYPE: 
       type = "Missed"; 
       break; 
     } 
     List<DataBean> DataBeanList = new ArrayList<DataBean>(); 
     DataBean dataBean = new DataBean(number, type, fDate, duration); 
     DataBeanList.add(dataBean); 
     Log.d("tag", DataBeanList.toString()); 
    } 
    managedCursor.close(); 
    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,android.R.id.text1); 
    listView.setAdapter(arrayAdapter); 
    } 
} 

<?php 
//Importing our db connection script 
require_once('connect.php'); 

if($_SERVER['REQUEST_METHOD']=='POST'){ 
//Getting values 
$number = $_POST['number']; 
$duration = $_POST['duration']; 
$type = $_POST['type']; 
$time = $_POST['time']; 

//Creating an sql query 
$sql = "INSERT INTO call_detail (number,duration,type,time) VALUES ('$number','$duration','$type','$time')"; 

    //Executing query to database 
    if(mysqli_query($con,$sql)){ 
     echo 'Entry Added Successfully'; 
    }else{ 
     echo 'Could Not Add Entry'; 
    } 

//Closing the database 
mysqli_close($con); 
} 
+0

だから、基本的にはそれらをmysqlテーブルに挿入したいのですか?あなたはjavaからデータを取得するためにPHPでスクリプトを書いていますか? –

+0

はい私はphpでスクリプトを書いています....... @ helldawg –

+0

あなたは実際にアンドロイドからPHPファイルにデータを送信し、それをmysqlに挿入する方法がほしいです。それはhttpUrlConnectionで達成することができますし、POST要求を行う –

答えて

0

は、これらのビデオを見て、オンラインphpMyAdminのサーバーにデータを挿入する方法を学ぶ.........私のPHPスクリプトですあなたのアンドロイドアプリを使用しています。このためには、オンラインでデータベースを作成してデータを保存し、オンラインでデータを取得できる無料のWebホスティングサーバーを000webhostから入手してください。

Webサーバーにオンラインでデータを保存する方法を学習する簡単で面白い方法。

https://www.youtube.com/watch?v=k3O3CY75ITY

これは、ビデオの最初の部分です。

+0

SQLiteを使ってオフラインデータを保存する。 –

+0

いいえ私はMySQLデータベースを使用していません.... –

+0

子供のセキュリティのためのペアレンタルコントロールアプリケーションを作成します.... –

1

私はこのメソッドを使用してAndroidからMySQLデータベースにデータをアップロードしています。まず、.phpファイルと通信してデータを送信するには、AsyncTaskが必要です。

public class MyInsertDataTask extends AsyncTask<String, Void, Boolean> { 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      pDialog = new ProgressDialog(YourActivity.this); 
      pDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
      pDialog.setIndeterminate(true); 
      pDialog.setMessage("Data Processing"); 
      pDialog.setCancelable(false); 
      pDialog.setInverseBackgroundForced(true); 
      pDialog.show(); 
     } 

     @Override 
     protected Boolean doInBackground(String... params) { 
      try { 
       URL url = new URL(params[0]); 
       HttpURLConnection urlConnection =(HttpURLConnection) url.openConnection(); 
       urlConnection.setRequestProperty("Accept-Encoding", "application/json"); 
       urlConnection.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); 
       urlConnection.setRequestMethod("POST"); 

       urlConnection.setDoInput(true); 
       urlConnection.setDoOutput(true); 
       urlConnection.connect(); 

       setupDataToDB(); 
       OutputStreamWriter outputStreamWriter = new OutputStreamWriter(urlConnection.getOutputStream()); 
       outputStreamWriter.write(dataToWrite.toString()); 
       Log.e("Data To Write", dataToWrite.toString()); 
       outputStreamWriter.flush(); 
       outputStreamWriter.close(); 
       int responseCode = urlConnection.getResponseCode(); 
       Log.e("Response Code ", String.valueOf(responseCode)); 
       if (responseCode == 200){ 
        InputStream inputStream = new BufferedInputStream(urlConnection.getInputStream()); 

        StringBuilder jsonResult = inputStreamToString(inputStream, YourActivity.this); 
        JSONObject jsonResponse = new JSONObject(jsonResult.toString()); 
        Log.e("Data From JSON", jsonResponse.toString()); 
        return true; 
       }else{ 
        InputStream inputStream = new BufferedInputStream(urlConnection.getErrorStream()); 
        Log.e("ERROR STREAM", inputStream.toString()); 
        return false; 
       } 
      } catch (Exception e) { 
       e.printStackTrace(); 

      } 

      return false; 
     } 
     @Override 
     protected void onPostExecute(Boolean aVoid) { 
      super.onPostExecute(aVoid); 
      pDialog.dismiss(); 
      if (aVoid){ 
       Toast.makeText(YourActivity.this, "Data Sent", Toast.LENGTH_LONG).show(); 
       YourActivity.this.finish(); 
      }else{ 
       Toast.makeText(YourActivity.this, "There was a problemm sending the data. Please try again", Toast.LENGTH_LONG).show(); 
      } 

     } 
    } 

    private void setupDataToDB() { 
     JSONObject dataToWrite = new JSONObject(); 
     try { 
      dataToWrite.put("number", numberStringFromJava); 
      dataToWrite.put("duration", durationStringFromJava); 
      dataToWrite.put("type", typeStringFromJava); 
      dataToWrite.put("time", timeStringFromJava); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 

してからInputStreamToString方法:

public StringBuilder inputStreamToString(InputStream is, Activity activity) { 
     String rLine; 
     StringBuilder answer = new StringBuilder(); 
     BufferedReader rd = new BufferedReader(new InputStreamReader(is)); 
     try { 
      while ((rLine = rd.readLine()) != null) { 
       answer.append(rLine); 
      } 
     } catch (Exception e) { 
      activity.finish(); 
     } 
     return answer; 
    } 

そしてすべてが正しければ、これはデータを挿入する必要があります。だから私はこれをしようとすることをお勧め

new MyInsertDataTask().execute("Your_php_file_path"); 

希望すると助かります!

+0

あなたの答えに感謝します........私はすべての可能な方法を行うと、私もAsyncTaskメソッドを使用します。私の質問のリンクを参照してください - http://stackoverflow.com/questions/40948014/how-to-convert-single-string-to-jsonarray-in-android –

+0

私の問題は、サーバーが負荷が大きいし、サーバーが中断していることです。 。 –

+0

問題はあなたのサーバーにあります... –

関連する問題