如何使用ArrayAdapter(Java)将数据插入MySQL服务器?
我是android开发新手,我想在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
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");