Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用ArrayAdapter(Java)将数据插入MySQL服务器?_Java_Android_Mysql_Arrays_Json - Fatal编程技术网

如何使用ArrayAdapter(Java)将数据插入MySQL服务器?

如何使用ArrayAdapter(Java)将数据插入MySQL服务器?,java,android,mysql,arrays,json,Java,Android,Mysql,Arrays,Json,我是android开发新手,我想在MySQL数据库中插入调用日志详细信息,这里我创建了简单的ArrayAdapter,这在listview中没有设置,第二件事是,如何在MySQL服务器中插入数据 这是我的java代码 public class MainActivity extends Activity { ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCr

我是android开发新手,我想在MySQL数据库中插入调用日志详细信息,这里我创建了简单的
ArrayAdapter
,这在listview中没有设置,第二件事是,如何在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);
   }
 }
公共类MainActivity扩展活动{
列表视图列表视图;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView=(listView)findViewById(R.id.lv);
getCallDetails();
}
私有void getCallDetails()
{
StringBuffer sb=新的StringBuffer();
字符串strOrder=android.provider.CallLog.Calls.DATE+“DESC”;
游标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);
某人追加(“通话记录:”);
while(managedCursor.moveToNext())
{
最终字符串编号=managedCursor.getString(编号1);
最终字符串类型2=managedCursor.getString(类型1);
最终字符串日期=managedCursor.getString(managedCursor.getColumnIndexOrThrow(“日期”)).toString();
java.util.Date date1=新的java.util.Date(Long.valueOf(Date));
最终字符串持续时间=managedCursor.getString(持续时间1);
字符串类型=null;
最后一个字符串fDate=date1.toString();
int callcode=Integer.parseInt(类型2);
开关(呼叫码)
{
案例CallLog.Calls.OUTGOING_类型:
type=“传出”;
打破
案例CallLog.Calls.INCOMING_类型:
type=“传入”;
打破
案例CallLog.Calls.MISSED_类型:
type=“Missed”;
打破
}
List DataBeanList=新建ArrayList();
DataBean DataBean=新数据库(编号、类型、fDate、持续时间);
添加(dataBean);
Log.d(“tag”,DataBeanList.toString());
}
managedCursor.close();
ArrayAdapter ArrayAdapter=新的ArrayAdapter(这是android.R.layout.simple_list_item_1,android.R.id.text1);
setAdapter(arrayAdapter);
}
}
这是我的php脚本

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

观看这些视频,了解如何使用android应用程序将数据插入在线phpmyadmin服务器。为此,从000webhost获得一个免费的web主机服务器,用于在线创建数据库以存储数据,然后可以在线检索数据

学习如何在web服务器上在线存储数据的简单而有趣的方法


这是视频的第一部分。

我使用这种方法将数据从Android上传到MySQL数据库。首先,您需要一个
AsyncTask
来与.php文件通信并发送数据。因此,我建议尝试以下方法:

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();
        }
    } 
如果一切都是正确的,这应该插入数据。您必须这样执行它:

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

希望对你有帮助

使用SQLite存储脱机数据。请明确说明您想要什么。您想要在线MySQL服务器还是离线MySQL服务器,两者都是单独实现的。很抱歉,我无法为您提供。我将投票表决你的问题。希望有人能帮助你:)让我们来吧。那么基本上你想把它们插入mysql表吗?您是否用php编写了脚本以从java获取数据?是的,我用php编写了脚本……@helldawgright,因此您只需要找到一种方法,将数据从android发送到php文件,然后将其插入mysql。这可以通过httpUrlConnection实现,并发出POST请求。我知道如何使用arrayadapter插入数据……我只是添加了我的php文件……感谢您的回答……。我用所有可能的方法,我也使用AsyncTask方法。请参阅我的问题链接--我的问题是服务器负载更大,然后服务器挂起。然后问题是您的服务器…找到更好的服务器我不知道是否有其他方法,因为无论哪种方法,您都必须打开连接->发送数据->关闭连接。我无法想象另一种方式。为什么要将字符串转换为json数组?您可以执行JSONArray array=newjsonarray(您的字符串);
new MyInsertDataTask().execute("Your_php_file_path");