2014-10-03 64 views
0

此應用程序試圖連接到MySQL和插入/更新/刪除數據到數據庫 但是當開始應用它顯示的信息「不幸的是項目已停止」無法實例活動(安卓)

MainActivity.java

package com.example.testsql; 
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.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MainActivity extends Activity implements OnClickListener { 

Button btn_select; 
Button btn_insert; 
Button btn_update; 
Button btn_delete; 

TextView tv_res; 
EditText txt_hn; 
EditText txt_name; 
EditText txt_age; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
// ตั้งค่าตัวแปล View 
tv_res = (TextView)findViewById(R.id.tv_res); 
txt_hn = (EditText)findViewById(R.id.txt_hn); 
txt_name = (EditText)findViewById(R.id.txt_name); 
txt_age = (EditText)findViewById(R.id.txt_age); 

btn_select = (Button)findViewById(R.id.btn_select); 
btn_select.setOnClickListener(this); 

btn_insert = (Button)findViewById(R.id.btn_insert); 
btn_insert.setOnClickListener(this); 

btn_update = (Button)findViewById(R.id.btn_update); 
btn_update.setOnClickListener(this); 

btn_delete = (Button)findViewById(R.id.btn_delete); 
btn_delete.setOnClickListener(this); 

} 

@Override 
public void onClick(View v){ 
switch(v.getId()){ 
case R.id.btn_select: 
{ 
select(); 
break; 
} 
case R.id.btn_insert: 
{ 
insert(); 
break; 
} 
case R.id.btn_update: 
{ 
update(); 
break; 
} 
case R.id.btn_delete: 
{ 
delete(); 
break; 
} 
} 
} 

public void clsText(){ 
txt_hn.setText(""); 
txt_name.setText(""); 
txt_age.setText(""); 
} 

public void insert(){ 
try{ 
String hn = txt_hn.getText().toString().trim(); 
String name = txt_name.getText().toString().trim(); 
String age = txt_age.getText().toString().trim(); 
if (hn.equals("") || name.equals("") || age.equals("")){ 
return ; 
} 
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
nameValuePairs.add(new BasicNameValuePair("isAdd","true")); 
nameValuePairs.add(new BasicNameValuePair("hn",hn)); 
nameValuePairs.add(new BasicNameValuePair("name",name)); 
nameValuePairs.add(new BasicNameValuePair("age",age)); 
HttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost("http://locahost/php_set_data.php");//Change IP to you WebServer 
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs,"UTF-8")); 
httpclient.execute(httppost); 
clsText(); 
}catch(Exception e){ 
Log.d("log_err", "Error in http connection " + e.toString()); 
} 
} 

public void update(){ 
// Your update algorithm 
Toast.makeText(getApplicationContext(), "update",Toast.LENGTH_SHORT).show(); 
} 

public void delete(){ 
// Your delete algorithm 
Toast.makeText(getApplicationContext(), "delete",Toast.LENGTH_SHORT).show(); 
} 

public void select() { 
tv_res.setText(""); 
InputStream is = null; 
String js_result = ""; 
try { 
HttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost("http://locahost/php_get_data.php"); 
HttpResponse response = httpclient.execute(httppost); 
HttpEntity entity = response.getEntity(); 
is = entity.getContent(); 
} catch (Exception e) { 
Log.d("log_err", "Error in http connection " + e.toString()); 
} 
try { 
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8")); 
StringBuilder sb = new StringBuilder(); 
String line = null; 
while ((line = reader.readLine()) != null) { 
sb.append(line); 
} 
is.close(); 
js_result = sb.toString(); 
} catch (Exception e) { 
Log.e("log_tag", "Error converting result " + e.toString()); 
} 
try { 
final JSONArray jArray = new JSONArray(js_result); 
for (int i = 0; i < jArray.length(); i++) { 
JSONObject jo = jArray.getJSONObject(i); 
String hn = jo.getString("hn"); 
String name = jo.getString("name"); 
String age = String.valueOf(jo.getInt("age")); 
String date_serv = jo.getString("date_serv"); 
Log.d("log",hn+","+name+","+age+","+date_serv); 
tv_res.append(hn+","+name+","+age+","+date_serv+"\n"); 
} 
} catch (JSONException e) { 
Log.e("log_tag", "Error parsing data " + e.toString()); 
} 
} 
} 

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 
    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Connect To Mysql Example" /> 
    <EditText 
     android:id="@+id/txt_hn" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:hint="HN" > 
    </EditText> 
    <EditText 
     android:id="@+id/txt_name" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:hint="Name-Lastname" /> 
    <EditText 
     android:id="@+id/txt_age" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:hint="Age" /> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 
     <Button 
      android:id="@+id/btn_insert" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Insert" /> 
     <Button 
      android:id="@+id/btn_select" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Select" /> 
     <Button 
      android:id="@+id/btn_update" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Update" /> 
     <Button 
      android:id="@+id/btn_delete" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Delete" /> 
    </LinearLayout> 
    <ScrollView 
     android:id="@+id/scrollView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" > 
      <TextView 
       android:id="@+id/tv_res" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:text="" /> 
     </LinearLayout> 
    </ScrollView> 
</LinearLayout> 

AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.testsql" 
android:versionCode="1" 
android:versionName="1.0" > 
<uses-sdk android:minSdkVersion="10" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<application 
android:icon="@drawable/ic_launcher" 
android:label="@string/app_name" > 
<activity 
android:name=".Main" 
android:label="@string/app_name" > 
<intent-filter> 
<action android:name="android.intent.action.MAIN" /> 
<category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 
</activity> 
</application> 
</manifest> 

php_set_data.php

<?php 
header("content-type:text/javascript;charset=utf-8"); 
$con=mysql_connect('localhost','root','')or die(mysql_error()); // เปลี่ยน localhost เป็น ip ของ mysql server 
mysql_select_db('android')or die(mysql_error()); 
mysql_query("SET NAMES UTF8"); 
if (isset($_POST)){ 
    if($_POST['isAdd']=='true'){ 
     $hn=$_POST['hn']; 
     $name=$_POST['name']; 
     $age = $_POST['age']; 
     $date = date('Y-m-d'); 
     $sql="INSERT INTO `patient` (`hn`, `name`, `age`, `date_serv`) VALUES ('$hn', '$name', '$age', '$date')"; 
     mysql_query($sql); 
    } 
} 
mysql_close(); 
?> 

php_get_data.php

<?php 
header("content-type:text/javascript;charset=utf-8"); 
$con=mysql_connect('localhost','root','')or die(mysql_error()); // เปลี่ยน localhost เป็น ip ของ mysql server 
mysql_select_db('android')or die(mysql_error()); 
mysql_query("SET NAMES UTF8"); 
$sql="SELECT * FROM patient"; 
$res=mysql_query($sql); 
while($row=mysql_fetch_assoc($res)){ 
    $output[]=$row; 
} 
print(json_encode($output)); 
mysql_close(); 
?> 

這是logcat的 enter image description here

+0

發佈烏爾logcat的幫助你 – 2014-10-03 05:02:58

+0

我必須給你的道具提供如此詳細關於涉及的代碼的信息。很多時候,您可以在Eclipse或IntelliJ/AndroidStudio中找到的Logcat輸出非常有用,並且通常可以找到尋找問題的好地方。 Logcat也可以從命令行運行,但我發現過濾這種風格比從Eclipse或IntelliJ/AndroidStudio中查看更加神祕。 – SnowInferno 2014-10-03 05:06:40

+0

如果您正在使用Logcat狀態,將很容易發現錯誤。使用Log.d()方法打印logcat狀態。 – CodeCanyon 2014-10-03 05:09:01

回答

5

時開始應用它顯示的信息 「不幸的是項目已 停止」

由於您沒有註冊MainActivity活動在AndroidManifest.xml 使用.MainActivity,而不是.MainAndroidManifest.xml註冊MainActivity活動:

<activity 
android:name=".MainActivity" 
android:label="@string/app_name" > 
    <!-- your code here --> 
</activity>