1. 通過(guò)?MySQL在windows下的配置?中介紹第二種方法,在服務(wù)器機(jī)器上配置php和mysql環(huán)境,譬如我的服務(wù)器機(jī)器ip為:10.141.249.1362. 新建在test數(shù)據(jù)庫(kù)下新建一個(gè)teacher表,表的內(nèi)容如下:

成都創(chuàng)新互聯(lián)專(zhuān)注于酉陽(yáng)土家族苗族網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供酉陽(yáng)土家族苗族營(yíng)銷(xiāo)型網(wǎng)站建設(shè),酉陽(yáng)土家族苗族網(wǎng)站制作、酉陽(yáng)土家族苗族網(wǎng)頁(yè)設(shè)計(jì)、酉陽(yáng)土家族苗族網(wǎng)站官網(wǎng)定制、微信小程序服務(wù),打造酉陽(yáng)土家族苗族網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供酉陽(yáng)土家族苗族網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。
3. 在服務(wù)器機(jī)器上的phpnow安裝目錄E:\PHPnow-1.5.5\htdocs下新建一個(gè)test.php文件,文件內(nèi)容如下:
?php
$link=mysql_connect("127.0.0.1","root","123456");
mysql_query("SET NAMES utf8");
mysql_select_db("test",$link);
$sql=mysql_query("select * from teacher ",$link);
while($row=mysql_fetch_assoc($sql))
$output[]=$row;
print(json_encode($output));
mysql_close();
?
4. 新建一個(gè)Android Java Project
需要修改的是一下三個(gè)文件:AndroidTestActivity.java、main.xml、AndroidManifest.xml
//AndroidTestActivity.java
package
com.knight.android.test;//根據(jù)實(shí)際的工程需要,修改包的名稱(chēng)
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.methods.HttpGet;
import
org.apache.http.impl.client.DefaultHttpClient;
import
org.json.JSONArray;
import
org.json.JSONException;
import
org.json.JSONObject;
import
android.app.Activity;
import
android.net.ParseException;
import
android.os.Bundle;
import
android.util.Log;
import
android.view.View;
import
android.widget.Button;
import
android.widget.EditText;
public
class
AndroidTestActivity
extends
Activity {
JSONArray jArray;
String result
= null;
InputStream is
= null;
StringBuilder sb
= null;
@Override
public
void
onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button b1 = (Button) findViewById(R.id.button1);
b1.setOnClickListener(new
Button.OnClickListener()
{
@Override
public
void
onClick(View v)
{
//
TODO
Auto-generated
method stub
EditText tv = (EditText) findViewById(R.id.editView);
ArrayListNameValuePair nameValuePairs = newArrayListNameValuePair();
//
http get
try
{
HttpClient httpclient = new
DefaultHttpClient();
HttpGet httpget = new
HttpGet(
"");
HttpResponse response = httpclient.execute(httpget);
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);
sb
= new
StringBuilder();
sb.append(reader.readLine()
+ "\n");
String line = "0";
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());
}
//
paring data
int
ct_id;
String ct_name;
try
{
jArray
= new
JSONArray(result);
JSONObject json_data = null;
for
(int
i = 0; i
jArray.length(); i++) {
json_data = jArray.getJSONObject(i);
ct_id = json_data.getInt("id");
ct_name = json_data.getString("name");
tv.append(ct_name + "
\n");
}
} catch
(JSONException e1)
{
//
Toast.makeText(getBaseContext(), "No City Found"
//
,Toast.LENGTH_LONG).show();
} catch
(ParseException e1)
{
e1.printStackTrace();
}
}
});
}
}
layout/main.xml
?xml version="1.0" encoding="utf-8"?
LinearLayout
xmlns:android=""
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
Button
? android:id="@+id/button1"
? android:layout_width="wrap_content"
? android:layout_height="wrap_content"
? android:text="click" /
EditText
? android:id="@+id/editView"
? android:layout_width="wrap_content"
? android:layout_height="wrap_content"
? android:text="HI "
? android:textSize="30dip" /
/LinearLayout
AndroidManifest.xml
?xml version="1.0" encoding="utf-8"?
manifest
xmlns:android=""
package="com.knight.android.test"
android:versionCode="1"
android:versionName="1.0"
application
? android:icon="@drawable/ic_launcher"
? android:label="@string/app_name"
? activity
? ? ?
android:name=".AndroidTestActivity"
? ? ? 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
!-- 授權(quán)訪問(wèn)網(wǎng)絡(luò) --
uses-permission android:name="android.permission.INTERNET"/
/manifest
5. 運(yùn)行結(jié)果如下圖:
點(diǎn)擊click以后,Android會(huì)向服務(wù)器發(fā)送一個(gè)Http
Get請(qǐng)求,服務(wù)器從mysql中讀取數(shù)據(jù)后,傳送給Android客戶(hù)端,客戶(hù)端編碼數(shù)據(jù)包,然后返回如下結(jié)果
注意:
(1)AndroidManifest.xml中不能出現(xiàn)uses-sdk android:minSdkVersion="15"
/這種屬性,否則Android客戶(hù)端無(wú)法連接到遠(yuǎn)程服務(wù)器
(2)如果在本機(jī)搭建mysql和php環(huán)境,以上程序(AndroidTestActivity.java)中紅色部分應(yīng)更改為:HttpGet httpget = new
HttpGet();127.0.0.1表示手機(jī)的本機(jī)ip,因?yàn)槌绦蜃罱K是在手機(jī)上跑的
(3)如果讀者自定義的工程,需要修改一下幾個(gè)地方:
第一個(gè)是?AndroidTestActivity.java
程序里面的package名稱(chēng)package
com.knight.android.test;這個(gè)根據(jù)讀者自己定義的包要做出相應(yīng)的修改(綠色部分)
第二個(gè)是修改 AndroidManifest.xml里面第三行的package=" com.knight.android.test",要保持綠色部分和第一條中的綠色部分相對(duì)應(yīng)
第三點(diǎn)是修改AndroidManifest.xml里面activity下面的 android:name=". AndroidTestActivity",將綠色部分修改為 AndroidTestActivity.java的紅色部分(也就是類(lèi)名)
(4)在MySQL中把編碼設(shè)置成utf8_unicode_ci,在瀏覽器中輸入:localhost/test.php,如果中文出現(xiàn)亂碼,可以把輸出的內(nèi)容復(fù)制到,如果在這里能顯示正常,則說(shuō)明實(shí)際上是的對(duì)的,因?yàn)闉g覽器輸出的是json編碼
Android
Studio怎么連接mysql數(shù)據(jù)庫(kù),建議使用mysql的客戶(hù)端查連接,或者使用java程序去連接,mysql安裝后就會(huì)自動(dòng)一個(gè)客戶(hù)端,這個(gè)就可以連接數(shù)據(jù)庫(kù)的。
android
studio是開(kāi)發(fā)android應(yīng)用的,寫(xiě)不了jsp,如果你要寫(xiě)java
web
jsp這種,建議使用IDEA或者用eclipse
IDE(開(kāi)發(fā)工具)。
客戶(hù)端一般不會(huì)直接連接服務(wù)器的數(shù)據(jù)庫(kù),這樣子服務(wù)器太不安全了。通常是用服務(wù)器端語(yǔ)言(PHP)寫(xiě)出與數(shù)據(jù)庫(kù)(MySQL)交互的接口,然后客戶(hù)端(Android)通過(guò)接口進(jìn)行數(shù)據(jù)的讀寫(xiě)。
我們先來(lái)看一個(gè)簡(jiǎn)單的Android app例子(這里是一個(gè)商品存貨清單項(xiàng)目),在Android程序中,我們可以訪問(wèn)(call)PHP腳本來(lái)執(zhí)行簡(jiǎn)單的CRUD操作(創(chuàng)建,讀取,更新,刪除)。為了使你對(duì)它的體系結(jié)構(gòu)有一個(gè)大概的了解,這里先說(shuō)一下它是怎么工作的。首先你的Android項(xiàng)目訪問(wèn)(call)PHP腳本來(lái)執(zhí)行一條數(shù)據(jù)操作,我們稱(chēng)它為“創(chuàng)建”。然后PHP腳本連接MySQL數(shù)據(jù)庫(kù)來(lái)執(zhí)行這個(gè)操作。這樣,數(shù)據(jù)從Android程序流向PHP腳本,最終存儲(chǔ)在MySQL數(shù)據(jù)庫(kù)中。
好了,讓我們來(lái)深入的看一下。
請(qǐng)注意:這里提供的代碼只是為了使你能簡(jiǎn)單的連接Android項(xiàng)目和PHP,MySQL。你不能把它作為一個(gè)標(biāo)準(zhǔn)或者安全編程實(shí)踐。在生產(chǎn)環(huán)境中,理想情況下你需要避免使用任何可能造成潛在注入漏洞的代碼(比如MYSQL注入)。MYSQL注入是一個(gè)很大的話題,不可能用單獨(dú)的一篇文章來(lái)說(shuō)清楚,并且它也不在本文討論的范圍內(nèi),所以本文不以討論。
1. 什么是WAMP Server
WAMP是Windows,Apache,MySQL和PHP,Perl,Python的簡(jiǎn)稱(chēng)。WAMP是一個(gè)一鍵安裝的軟件,它為開(kāi)發(fā)PHP,MySQL Web應(yīng)用程序提供一個(gè)環(huán)境。安裝這款軟件你相當(dāng)于安裝了Apache,MySQL和PHP。或者,你也可以使用 XAMP 。
2. 安裝和使用WAMP Server
在瀏覽器中輸入 來(lái)測(cè)試你的服務(wù)器是否安裝成功。同樣的,也可以打開(kāi) 來(lái)檢驗(yàn)phpmyadmin是否安裝成功。
3. 創(chuàng)建和運(yùn)行PHP項(xiàng)目
現(xiàn)在,你已經(jīng)有一個(gè)能開(kāi)發(fā)PHP和MYSQL項(xiàng)目的環(huán)境了。打開(kāi)安裝WAMP Server的文件夾(在我的電腦中,是C:\wamp\),打開(kāi)www文件夾,為你的項(xiàng)目創(chuàng)建一個(gè)新的文件夾。你必須把項(xiàng)目中所有的文件放到這個(gè)文件夾中。
新建一個(gè)名為android_connect的文件夾,并新建一個(gè)php文件,命名為test.php,嘗試輸入一些簡(jiǎn)單的php代碼(如下所示)。輸入下面的代碼后,打開(kāi) ,你會(huì)在瀏覽器中看到“Welcome,I am connecting Android to PHP,MySQL”(如果沒(méi)有正確輸入,請(qǐng)檢查WAMP配置是否正確)
test.php
?php
echo"Welcome, I am connecting Android to PHP, MySQL";
?
4. 創(chuàng)建MySQL數(shù)據(jù)庫(kù)和表
在本教程中,我創(chuàng)建了一個(gè)簡(jiǎn)單的只有一張表的數(shù)據(jù)庫(kù)。我會(huì)用這個(gè)表來(lái)執(zhí)行一些示例操作。現(xiàn)在,請(qǐng)?jiān)跒g覽器中輸入 ,并打開(kāi) phpmyadmin。 你可以用PhpMyAdmin工具創(chuàng)建數(shù)據(jù)庫(kù)和表。
創(chuàng)建數(shù)據(jù)庫(kù)和表:數(shù)據(jù)庫(kù)名:androidhive,表:product
CREATE DATABASE androidhive;
CREATE TABLE products(
pid int(11) primary key auto_increment,
name varchar(100) not null,
price decimal(10,2) not null,
description text,
created_at timestamp defaultnow(),
updated_at timestamp
);
5. 用PHP連接MySQL數(shù)據(jù)庫(kù)
現(xiàn)在,真正的服務(wù)器端編程開(kāi)始了。新建一個(gè)PHP類(lèi)來(lái)連接MYSQL數(shù)據(jù)庫(kù)。這個(gè)類(lèi)的主要功能是打開(kāi)數(shù)據(jù)庫(kù)連接和在不需要時(shí)關(guān)閉數(shù)據(jù)庫(kù)連接。
新建兩個(gè)文件 db_config.php,db_connect.php
db_config.php-------- 存儲(chǔ)數(shù)據(jù)庫(kù)連接變量
db_connect.php------- 連接數(shù)據(jù)庫(kù)的類(lèi)文件
db_config.php
?php
/*
* All database connection variables
*/
define('DB_USER', "root"); // db user
define('DB_PASSWORD', ""); // db password (mention your db password here)
define('DB_DATABASE', "androidhive"); // database name
define('DB_SERVER', "localhost"); // db server
db_connect.php
?php
/**
* A class file to connect to database
*/
classDB_CONNECT {
// constructor
function__construct() {
// connecting to database
$this-connect();
}
// destructor
function__destruct() {
// closing db connection
$this-close();
}
/**
* Function to connect with database
*/
functionconnect() {
// import database connection variables
require_once__DIR__ . '/db_config.php';
// Connecting to mysql database
$con= mysql_connect(DB_SERVER, DB_USER, DB_PASSWORD) ordie(mysql_error());
// Selecing database
$db= mysql_select_db(DB_DATABASE) ordie(mysql_error()) ordie(mysql_error());
// returing connection cursor
return$con;
}
/**
* Function to close db connection
*/
functionclose() {
// closing db connection
mysql_close();
}
}
?
怎么調(diào)用 :當(dāng)你想連接MySQl數(shù)據(jù)庫(kù)或者執(zhí)行某些操作時(shí),可以這樣使用db_connect.php
$db= newDB_CONNECT(); // creating class object(will open database connection)
6. 使用PHP執(zhí)行基本CRUD操作
在這部分,我將講述使用PHP對(duì)MySQL數(shù)據(jù)庫(kù)執(zhí)行基本CRUD(創(chuàng)建,讀取,更新,刪除)操作。
如果你是PHP和MySQL新手,我建議你可以先學(xué)習(xí) PHP 和 SQL 基礎(chǔ)知識(shí)。
6. a)在MYSQL中新建一行(創(chuàng)建一行新的產(chǎn)品)
在你的PHP項(xiàng)目中新建一個(gè)php文件,命名為create_product.php,并輸入以下代碼。該文件主要實(shí)現(xiàn)在products表中插入一個(gè)新的產(chǎn)品。
在下面的代碼我使用POST來(lái)讀取產(chǎn)品數(shù)據(jù)并把他們存儲(chǔ)在products表中。
最后我會(huì)輸出一些JSON返回值,以便返回給客戶(hù)端(Android項(xiàng)目)
新聞名稱(chēng):包含android通過(guò)php連接mysql的詞條
標(biāo)題網(wǎng)址:http://chinadenli.net/article41/dsephed.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、動(dòng)態(tài)網(wǎng)站、ChatGPT、網(wǎng)站導(dǎo)航、網(wǎng)站設(shè)計(jì)、面包屑導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)