2016-10-27 27 views
0

私はアンドロイド開発の新機能です。私は、MySQLデータベースにコールログの詳細を挿入したいと思います。ですから、アンドロイド側からは、arrayListを取得していて、そのリストをstring []配列に変換しましたが、この配列をデータベースに挿入することができません。ここでは、HashMap<String,Array>でデータ全体を挿入しています。 hashsmapは配列arguementをstring []配列として取ることができません。 PLZ ..ここにJavaコードが事前MySQLデータベースに文字列[]配列を挿入するには?

で感謝し、この問題を整理して

public class MainActivity extends AppCompatActivity { 
ArrayList<String> arrayList; 
String phNum,callType,samay,callDuration; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ListView animalList=(ListView)findViewById(R.id.listView); 

    arrayList = new ArrayList<String>(); 

    getCallDetails(); 
    // Create The Adapter with passing ArrayList as 3rd parameter 
    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, arrayList); 
    // Set The Adapter 
    animalList.setAdapter(arrayAdapter); 
} 

private void getCallDetails() { 
    String strOrder = android.provider.CallLog.Calls.DATE + " DESC"; 
/* Query the CallLog Content Provider */ 
    Cursor managedCursor = managedQuery(CallLog.Calls.CONTENT_URI, null, 
      null, null, strOrder); 
    int number = managedCursor.getColumnIndex(CallLog.Calls.NUMBER); 
    int type = managedCursor.getColumnIndex(CallLog.Calls.TYPE); 
    int date = managedCursor.getColumnIndex(CallLog.Calls.DATE); 
    int duration = managedCursor.getColumnIndex(CallLog.Calls.DURATION); 
    while (managedCursor.moveToNext()) { 
     phNum = managedCursor.getString(number); 
     String callTypeCode = managedCursor.getString(type); 
     String strcallDate = managedCursor.getString(date); 
     Date callDate = new Date(Long.valueOf(strcallDate)); 
     samay = callDate.toString(); 
     callDuration = managedCursor.getString(duration); 
     callType = null; 
     int callcode = Integer.parseInt(callTypeCode); 
     switch (callcode) { 
      case CallLog.Calls.OUTGOING_TYPE: 
       callType = "Outgoing"; 
       break; 
      case CallLog.Calls.INCOMING_TYPE: 
       callType = "Incoming"; 
       break; 
      case CallLog.Calls.MISSED_TYPE: 
       callType = "Missed"; 
       break; 
     } 
     arrayList.add(phNum); 
     arrayList.add(callDuration); 
     arrayList.add(callType); 
     arrayList.add(samay); 
    } 
    managedCursor.close(); 
    /*String[] array = new String[arrayList.size()]; 
    array = arrayList.toArray(array); 

    for(String s : array) 
    {Log.d("TAG",s);}*/ 
    final String[] data = arrayList.toArray(new String[arrayList.size()]); 
    final java.sql.Array sqlArray = Connection.createArrayOf("VARCHAR", data); 

    class getCallDetails extends AsyncTask<Void, Void, String> { 
     @Override 
     protected String doInBackground(Void... params) { 
      HashMap<String, Array> param = new HashMap<String, Array>(); 
      param.put(Connect.KEY_ARRAY, sqlArray); 

      RequestHandler rh = new RequestHandler(); 
      String res = rh.sendPostRequest(Connect.URL_ADD, param); 
      return res; 
     } 
    } 
    getCallDetails idata = new getCallDetails(); 
    idata.execute(); 
} 

} 

を助けるここに私はjava.sqlの配列が、Connection.createArrayOf()に文字列[]配列を変換しようとしたエラーを示します非静的メソッドの参照は静的コンテキストから参照できません。

+0

Webサービスにデータを「JSON」として送信し、MySQLに挿入します。 –

+0

お返事ありがとうございます@KNeerajLalはjsonでループデータを保存する方法を説明しますか? –

+0

関連するかどうかわかりませんが、少し助けてください:http://stackoverflow.com/questions/25582199/sending-arraylist-from-android-to-php-script-using-json/25582566#25582566 –

答えて

0

まず

private class ContactData { 
    String phNum; 
    String callDuration; 
    String callType; 
    String samay; 

    public ContactData(String phNum, String callDuration, String callType, String samay) { 
     this.phNum = phNum; 
     this.callDuration = callDuration; 
     this.callType = callType; 
     this.samay = samay; 
    } 

    // getters and setters 
} 

ArrayListへの変換にwhileループの前にListを作成して、ループ内でこれにデータを挿入、

List<ContactData> items = new ArrayList<String>(); 
while (managedCursor.moveToNext()) { 
    ... 
    items.add(new ContactData(phNum, callDuration, callType, samay)); 
} 

使用GSON library、データを格納するPOJOクラスを作成しますJSON

String listOfItems = new Gson().toJson(items); 

このデータをサーバーに送信します。これを行う方法はhereを参照してください。

関連する問題