java - 如何将string[]数组插入MySQL数据库?

标签 java android mysql arrays

我是 Android 开发新手,我想在 MySQL 数据库中插入通话记录详细信息。所以,从android端我得到一个 arrayList 并且我已经将该列表转换为 string[] 数组,但我无法在数据库中插入这个数组,我用 HashMap<String,Array> 插入整个数据。但 hashsmap 无法将数组争论视为 string[] 数组。请帮助解决这个问题,提前致谢

这是java代码..

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();
}

}

这里我尝试将 string[] 数组转换为 java.sql 数组,但 Connection.createArrayOf() 显示无法从静态上下文引用非静态方法的错误。

最佳答案

首先创建一个POJO类来存储数据,

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
}

在 while 循环之前创建一个 List 并在循环内将数据插入其中,

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

使用GSON libraryArrayList 转换为 JSON

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

将此数据发布到服务器。请参阅here如何做到这一点。

关于java - 如何将string[]数组插入MySQL数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40280395/

相关文章:

java - Play Framework 2.1 中的简单搜索?

java - JNA 中的 Marshal.StructureToPtr Java 等价物

java - com.samsung.android.content.clipboard.SemClipboardManager.registerClipboardEventListener + 708 (SemClipboardManager.java :708)

Android展开/折叠RelativeLayout

mysql - 有没有办法在(列表)中包含来自 MySQL 查询 : select. .from..where..id 的重复项

java - Junit 5 中的动态显示名称

java - Facebook android sdk 需要 java 1.7 才能工作吗?

android - 无法在 Android 上调试 Adob​​e AIR 移动应用程序

mysql - inner join更新sql出错

python - 在查询中使用 pandas 和命名参数从 mysql 表中读取