从 android 应用向 MySQL 插入数据
inserting data into MySQL from android app
我打算为 android 开发一个网络应用程序,但我是第一次尝试这个实验,所以我无法完成我的任务,因为我是新手。它给我一个错误,如字符串无法转换为 JSONObject。请帮助我,我已经尝试了一切,但还没有找到任何解决方案。这是我的代码。
public class signup extends Activity implements OnClickListener {
Button signup,cancel;
EditText e1,e2,e3,e4;
String name;
String email;
String mobile;
String passwd;
InputStream is=null;
String result=null;
String line=null;
int code;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.signupfrag);
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
signup=(Button)findViewById(R.id.reg);
cancel=(Button)findViewById(R.id.regcancel);
e1=(EditText)findViewById(R.id.name);
e2=(EditText)findViewById(R.id.uid);
e3=(EditText)findViewById(R.id.contact);
e4=(EditText)findViewById(R.id.passwd);
signup.setOnClickListener(this);
cancel.setOnClickListener(this);
}
public void onClick(View v) {
// TODO Auto-generated method stub
if(v.getId()==R.id.reg)
{
name = e1.getText().toString();
email = e2.getText().toString();
mobile = e3.getText().toString();
passwd = e4.getText().toString();
insert();
Intent i=new Intent(signup.this,MainActivity.class);
startActivity(i);
}
if(v.getId()==R.id.regcancel)
{
e1.setText(null);
e2.setText(null);
e3.setText(null);
e4.setText(null);
}
}
private void insert() {
// TODO Auto-generated method stub
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("fname",name));
nameValuePairs.add(new BasicNameValuePair("email",email));
nameValuePairs.add(new BasicNameValuePair("mobile",mobile));
nameValuePairs.add(new BasicNameValuePair("passwd",passwd));
try
{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://192.168.43.73/htdocs/insert1.php");//10.0.2.2
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
Log.e("pass 1", "connection success ");
}
catch(Exception e)
{
Log.e("Fail 1", e.toString());
Toast.makeText(getApplicationContext(), "Invalid IP Address",
Toast.LENGTH_LONG).show();
}
try
{
BufferedReader reader = new BufferedReader
(new InputStreamReader(is,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
is.close();
result = sb.toString();
Log.e("pass 2", "connection success ");
}
catch(Exception e)
{
Log.e("Fail 2", e.toString());
}
try
{
JSONObject json_data = new JSONObject(result);
code=(json_data.getInt("code"));
if(code==1)
{
Toast.makeText(getBaseContext(), "Inserted Successfully",
Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(getBaseContext(), "Sorry, Try Again",
Toast.LENGTH_LONG).show();
}
}
catch(Exception e)
{
Log.e("log_tag", "Error parsing data "+e.toString());
Log.e("log_tag", "Failed data was:\n" + result);
Log.e("Fail 3", e.toString());
}
}
}
这是我的 php 代码
<?php
$host='127.0.0.1';
$uname='root';
$pwd='password';
$db="resumemaker";
$con = mysql_connect("localhost", "root");
mysql_select_db($db,$con) or die("db selection failed");
$fname=$_REQUEST['fname'];
$email=$_REQUEST['email'];
$mobile=$_REQUEST['mobile'];
$passwd=$_REQUEST['passwd'];
$flag['code']=0;
if($r=mysql_query("insert into sample values('$fname','$email','$mobile','$passwd') ",$con))
{
$flag['code']=1;
//echo"hi";
}
print(json_encode($flag));
mysql_close($con);
?>
提前致谢....
你没有将它编码成 json 看这个例子将帮助你 100% 的工作代码
Index.php
<?php
header("Content-Type:application/json");
include("function.php");
$fname=$_REQUEST['fname'];
$email=$_REQUEST['email'];
$mobile=$_REQUEST['mobile'];
$passwd=$_REQUEST['passwd'];
$record = fetchrecord($fname,$email,$mobile,$passwd);
if(empty($record))
{
deliverresponse(200,"Record not found",NULL,0);
}
else
{
deliverresponse(200,"Record Displayed",$record,1);
}
function deliverresponse($status,$status_message,$data,$success)
{
header("HTTP/1.1 $status $status_message");
$response['status'] = $status;
$response['status_message'] = $status_message;
$response['code'] = $code;
$response['data'] = $data;
$jsonresponse = json_encode($response);
echo $jsonresponse;
}
?>
Function.php
<?php
$conn = mysql_connect("localhost", "root", "");
mysql_select_db('your db name', $conn);
function fetchrecord($fname,$email,$mobile,$passwd)
{
$qur = mysql_query("INSERT INTO `sample` (fname,email,mobile,passwd) VALUES (NULL, '$fname','$email','$mobile','$passwd')") or die ("Query Failed");
if($qur)
{
$msg = "Record Inserted";
$user[] = array($msg);
}
else
{
$msg = "Record not Inserted";
$user[] = array($msg);
}
return $user;
}
为网络线程使用异步 Class
public class SignupProcess extends AsyncTask<String, String, String>
{
JSONObject json = new JSONObject();
private static final String TAG_SUCCESS = "code";
@Override
protected void onPreExecute() {
pDialog = new ProgressDialog(signup.this);
pDialog.setMessage("Login..");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
super.onPreExecute();
}
@Override
protected String doInBackground(String... args) {
List<NameValuePair> pair = new ArrayList<>();
pair.add(new BasicNameValuePair("name", name));
pair.add(new BasicNameValuePair("email", email));
pair.add(new BasicNameValuePair("password", mobile));
pair.add(new BasicNameValuePair("status",String,psswd);
json = JSONParser.makeHttpRequest("http://xxxxxxx","GET", pair);
Log.d("Create Response", json.toString());
try {
int success = json.getInt(TAG_SUCCESS);
getstatus = success;
if (success == 1) {
Log.d("success!", json.toString());
}
else if (success==0){
return json.getString(TAG_SUCCESS);
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
JSONParser.java
public class JSONParser {
static InputStream is = null;
static JSONObject jObj = null;
static String json = "";
public static String Result=null;
public JSONParser()
{
}
public static JSONObject makeHttpRequest(String url,String method, List<NameValuePair> pair) {
try {
// check for request method
if(method.equals("POST")){
// request method is POST
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(pair));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
}else if(method.equals("GET")){
// request method is GET
DefaultHttpClient httpClient = new DefaultHttpClient();
String paramString = URLEncodedUtils.format(pair, "utf-8");
url += "?" + paramString;
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, HTTP.UTF_8), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
json = sb.toString();
Result = json;
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
// try parse the string to a JSON object
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
return jObj;
}
}
在按钮点击侦听器上写入
new SignupProcess().execute();
我打算为 android 开发一个网络应用程序,但我是第一次尝试这个实验,所以我无法完成我的任务,因为我是新手。它给我一个错误,如字符串无法转换为 JSONObject。请帮助我,我已经尝试了一切,但还没有找到任何解决方案。这是我的代码。
public class signup extends Activity implements OnClickListener {
Button signup,cancel;
EditText e1,e2,e3,e4;
String name;
String email;
String mobile;
String passwd;
InputStream is=null;
String result=null;
String line=null;
int code;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.signupfrag);
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
signup=(Button)findViewById(R.id.reg);
cancel=(Button)findViewById(R.id.regcancel);
e1=(EditText)findViewById(R.id.name);
e2=(EditText)findViewById(R.id.uid);
e3=(EditText)findViewById(R.id.contact);
e4=(EditText)findViewById(R.id.passwd);
signup.setOnClickListener(this);
cancel.setOnClickListener(this);
}
public void onClick(View v) {
// TODO Auto-generated method stub
if(v.getId()==R.id.reg)
{
name = e1.getText().toString();
email = e2.getText().toString();
mobile = e3.getText().toString();
passwd = e4.getText().toString();
insert();
Intent i=new Intent(signup.this,MainActivity.class);
startActivity(i);
}
if(v.getId()==R.id.regcancel)
{
e1.setText(null);
e2.setText(null);
e3.setText(null);
e4.setText(null);
}
}
private void insert() {
// TODO Auto-generated method stub
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("fname",name));
nameValuePairs.add(new BasicNameValuePair("email",email));
nameValuePairs.add(new BasicNameValuePair("mobile",mobile));
nameValuePairs.add(new BasicNameValuePair("passwd",passwd));
try
{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://192.168.43.73/htdocs/insert1.php");//10.0.2.2
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
Log.e("pass 1", "connection success ");
}
catch(Exception e)
{
Log.e("Fail 1", e.toString());
Toast.makeText(getApplicationContext(), "Invalid IP Address",
Toast.LENGTH_LONG).show();
}
try
{
BufferedReader reader = new BufferedReader
(new InputStreamReader(is,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
is.close();
result = sb.toString();
Log.e("pass 2", "connection success ");
}
catch(Exception e)
{
Log.e("Fail 2", e.toString());
}
try
{
JSONObject json_data = new JSONObject(result);
code=(json_data.getInt("code"));
if(code==1)
{
Toast.makeText(getBaseContext(), "Inserted Successfully",
Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(getBaseContext(), "Sorry, Try Again",
Toast.LENGTH_LONG).show();
}
}
catch(Exception e)
{
Log.e("log_tag", "Error parsing data "+e.toString());
Log.e("log_tag", "Failed data was:\n" + result);
Log.e("Fail 3", e.toString());
}
}
}
这是我的 php 代码
<?php
$host='127.0.0.1';
$uname='root';
$pwd='password';
$db="resumemaker";
$con = mysql_connect("localhost", "root");
mysql_select_db($db,$con) or die("db selection failed");
$fname=$_REQUEST['fname'];
$email=$_REQUEST['email'];
$mobile=$_REQUEST['mobile'];
$passwd=$_REQUEST['passwd'];
$flag['code']=0;
if($r=mysql_query("insert into sample values('$fname','$email','$mobile','$passwd') ",$con))
{
$flag['code']=1;
//echo"hi";
}
print(json_encode($flag));
mysql_close($con);
?>
提前致谢....
你没有将它编码成 json 看这个例子将帮助你 100% 的工作代码
Index.php
<?php
header("Content-Type:application/json");
include("function.php");
$fname=$_REQUEST['fname'];
$email=$_REQUEST['email'];
$mobile=$_REQUEST['mobile'];
$passwd=$_REQUEST['passwd'];
$record = fetchrecord($fname,$email,$mobile,$passwd);
if(empty($record))
{
deliverresponse(200,"Record not found",NULL,0);
}
else
{
deliverresponse(200,"Record Displayed",$record,1);
}
function deliverresponse($status,$status_message,$data,$success)
{
header("HTTP/1.1 $status $status_message");
$response['status'] = $status;
$response['status_message'] = $status_message;
$response['code'] = $code;
$response['data'] = $data;
$jsonresponse = json_encode($response);
echo $jsonresponse;
}
?>
Function.php
<?php
$conn = mysql_connect("localhost", "root", "");
mysql_select_db('your db name', $conn);
function fetchrecord($fname,$email,$mobile,$passwd)
{
$qur = mysql_query("INSERT INTO `sample` (fname,email,mobile,passwd) VALUES (NULL, '$fname','$email','$mobile','$passwd')") or die ("Query Failed");
if($qur)
{
$msg = "Record Inserted";
$user[] = array($msg);
}
else
{
$msg = "Record not Inserted";
$user[] = array($msg);
}
return $user;
}
为网络线程使用异步 Class
public class SignupProcess extends AsyncTask<String, String, String>
{
JSONObject json = new JSONObject();
private static final String TAG_SUCCESS = "code";
@Override
protected void onPreExecute() {
pDialog = new ProgressDialog(signup.this);
pDialog.setMessage("Login..");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
super.onPreExecute();
}
@Override
protected String doInBackground(String... args) {
List<NameValuePair> pair = new ArrayList<>();
pair.add(new BasicNameValuePair("name", name));
pair.add(new BasicNameValuePair("email", email));
pair.add(new BasicNameValuePair("password", mobile));
pair.add(new BasicNameValuePair("status",String,psswd);
json = JSONParser.makeHttpRequest("http://xxxxxxx","GET", pair);
Log.d("Create Response", json.toString());
try {
int success = json.getInt(TAG_SUCCESS);
getstatus = success;
if (success == 1) {
Log.d("success!", json.toString());
}
else if (success==0){
return json.getString(TAG_SUCCESS);
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
JSONParser.java
public class JSONParser {
static InputStream is = null;
static JSONObject jObj = null;
static String json = "";
public static String Result=null;
public JSONParser()
{
}
public static JSONObject makeHttpRequest(String url,String method, List<NameValuePair> pair) {
try {
// check for request method
if(method.equals("POST")){
// request method is POST
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(pair));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
}else if(method.equals("GET")){
// request method is GET
DefaultHttpClient httpClient = new DefaultHttpClient();
String paramString = URLEncodedUtils.format(pair, "utf-8");
url += "?" + paramString;
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, HTTP.UTF_8), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
json = sb.toString();
Result = json;
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
// try parse the string to a JSON object
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
return jObj;
}
}
在按钮点击侦听器上写入
new SignupProcess().execute();