Android – 连接MySQL数据库

我一直在尝试各种网站上显示的关于将MySQL数据库连接到android的教程。 目前,下面的代码采用您硬编码的值(即year = 2005和name = tom)并通过php脚本运行它。 我想知道的是我如何修改它,以便它取用户在文本框中输入的值。

package com.test; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.widget.LinearLayout; import android.widget.TextView; public class test extends Activity { /** Called when the activity is first created. */ TextView txt; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // Create a crude view - this should really be set via the layout resources // but since its an example saves declaring them in the XML. LinearLayout rootLayout = new LinearLayout(getApplicationContext()); txt = new TextView(getApplicationContext()); rootLayout.addView(txt); setContentView(rootLayout); // Set the text and call the connect function. txt.setText("Connecting..."); //call the method to run the data retrieval txt.setText(getServerData(KEY_121)); } public static final String KEY_121 = "http://***.****.com/mysqlcon.php"; //i use my real ip here private String getServerData(String returnString) { InputStream is = null; String result = ""; //the year data to send ArrayList nameValuePairs = new ArrayList(); nameValuePairs.add(new BasicNameValuePair("year","2005")); nameValuePairs.add(new BasicNameValuePair("name","tom")); //http post try{ HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(KEY_121); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); is = entity.getContent(); }catch(Exception e){ Log.e("log_tag", "Error in http connection "+e.toString()); } //convert response to string try{ BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); result=sb.toString(); }catch(Exception e){ Log.e("log_tag", "Error converting result "+e.toString()); } //parse json data try{ JSONArray jArray = new JSONArray(result); for(int i=0;i<jArray.length();i++){ JSONObject json_data = jArray.getJSONObject(i); Log.i("log_tag","id: "+json_data.getInt("id")+ ", name: "+json_data.getString("name")+ ", sex: "+json_data.getInt("sex")+ ", birthyear: "+json_data.getInt("birthyear") ); //Get an output to the screen returnString += "\n\t" + jArray.getJSONObject(i); } }catch(JSONException e){ Log.e("log_tag", "Error parsing data "+e.toString()); } return returnString; } } 

好的,我明白你想要什么。 您希望在应用程序中有一两个EditText。 用户将在其中输入信息,按下按钮后,EditText中的信息应移动到mysql数据库中。 所以,你想制作一个将记录插入mysql的动态应用程序。 为此,请执行以下操作以修改上述java代码。

在下面插入以下行, TextView txt;

 EditText editTxt; 

rootLayout.addView(txt)下面; 插入以下两行,

 editTxt = new EditText(this); rootLayout.addView(editTxt); 

现在,修改这一行, nameValuePairs.add(new BasicNameValuePair(“name”,“tom”)); 从EditText获取值。

 nameValuePairs.add(new BasicNameValuePair("name",editTxt.getText().toString())); 

您也可以创建一年。