今天要來實做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>
----
接下來就是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();
?>
----
以上大功告成!!