今天要來實做android連結mysql

android 要連結mysql並不是android寫寫就能好的

還需要寫php當API連結才能把資料輸入/查詢 MYSQL

 

以下開始:

先設計android 的xml檔吧!

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.leave.MainActivity" >

    <EditText
        android:id="@+id/acc"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="46dp"
        android:hint="輸入車牌號碼"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/login"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/acc"
        android:layout_below="@+id/acc"
        android:layout_marginTop="43dp"
        android:text="簽到" />

</RelativeLayout>

1.png

----

接下來就是android的程式碼了:

以下是主程式MainActivity.java,我這次主要是要插入資料
public class MainActivity extends Activity {
     private Button login;
     private EditText acc;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        login = (Button)findViewById(R.id.login);
        acc=(EditText)findViewById(R.id.acc);
        login.setOnClickListener(getDBRecord);


        StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()  
        .detectDiskReads()  
        .detectDiskWrites()  
        .detectNetwork()  
        .penaltyLog()  
        .build());  
        StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()  
        .detectLeakedSqlLiteObjects()   
        .penaltyLog()  
        .penaltyDeath()  
        .build());  
    }
    
    private Button.OnClickListener getDBRecord = new Button.OnClickListener() {
        public void onClick(View v) {
           mydb(); 
        }
    };
  
    public void mydb(){
         try {
             String car_num=acc.getText().toString().toUpperCase();
        //date
            Date date = new Date();
           SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
           String dateStr = sdf.format(date);
           //time      
           Date time =new Date();
           SimpleDateFormat t=new SimpleDateFormat("HHmm");
           String timestr=t.format(time);
           carin.executeQuery(car_num,dateStr,timestr);

          //插入Mysql
             } catch(Exception e) { }
    } 
}

----

完成後,再建立一個carin.java

public class carin {
 
public static String executeQuery(String car,String date,String time)
    { String result ="";
          try {
        HttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost("http://192.168.1.247/A/carin.php");
        ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
       params.add(new BasicNameValuePair("car", car));
       params.add(new BasicNameValuePair("date", date));
       params.add(new BasicNameValuePair("time", time));
       httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
        HttpResponse httpResponse = httpClient.execute(httpPost);
        HttpEntity httpEntity = httpResponse.getEntity();
        InputStream inputStream = httpEntity.getContent();
        BufferedReader bufReader = new BufferedReader(new InputStreamReader(inputStream, "utf-8"), 8);
        StringBuilder builder = new StringBuilder();
        String line = null;
        while((line = bufReader.readLine()) != null) {
            builder.append(line + "\n");
        } 
        inputStream.close();
        result = builder.toString();
    } 
    catch(Exception e) {}
    return result;
}
}

----

在mainfest.xml記得加

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

-----

接下來就是PHP的部分了,把它放在localhost即可

carin.php

<?php
    $dbhost = 'localhost';
    $dbuser = 'root';
    $dbpass = '12344321';
    $dbname = 'test';
    $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error with MySQL connection');
    mysql_query("SET NAMES 'utf8'");
    mysql_select_db($dbname);
    $car=$_POST['car'];
    $date=$_POST['date'];
    $time=$_POST['time'];
    $sql="insert into sign (car,date,time) values ('$car','$date','$time')";
    if($car!=""){    mysql_query($sql);} 
$output[]=$e;
print(json_encode($output));
mysql_close();
?>

----

以上大功告成!!

arrow
arrow
    文章標籤
    android mysql 連結
    全站熱搜

    kyo 發表在 痞客邦 留言(0) 人氣()