Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Kết nối với cơ sở dữ liệu MySQL từ xa bằng Android

Phía ứng dụng Android:

private ArrayList<String> receiveData(String file, ArrayList<NameValuePair> data)
{
    InputStream is = null;
    ArrayList<String> output = new ArrayList<String>();
    String line = null;

    //Connect and obtain data via HTTP.
    try
    {
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://www.blah.com/"+file);
        httppost.setEntity(new UrlEncodedFormEntity(data));
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        is = entity.getContent();

    }
    catch(Exception e)
    {
        Log.e("log_tag", "Error in http connection "+e.toString());
    }

    //Parse data into ArrayList and return.
    try
    {
        BufferedReader reader = 
            new BufferedReader(new InputStreamReader(is,"iso-8859-1"));

        while ((line = reader.readLine()) != null) 
        {
            //Parse data into tokens and removing unimportant tokens.
            StringTokenizer st = new StringTokenizer(line, delims, false);

            while(st.hasMoreTokens())
            {
                String token = st.nextToken();
                output.add(token);
            }
        }

        is.close();
        //Log output of data in LogCat.
        Log.d("DATA","DATA:"+output);

    }
    catch(Exception e)
    {
        Log.e("log_tag", "Error converting result "+e.toString());
    }
    return output;
}

/**
 * Gets all  data from GetAllData.php
 * @return output - ArrayList containing  data.
 */
public ArrayList<String> getAllData(String row)
{
    fileName = "GetAllData.php";

    //Add arguments to arrayList<NameValuePairs> so we can encode the data and send it on.
    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
    nameValuePairs.add(new BasicNameValuePair("row", row));

    ArrayList<String> output = this.receiveData(fileName, nameValuePairs);
    return output;
}

Phía máy chủ:

vì vậy tệp GetAllData.php trên máy chủ là:

<?php
/*
 * What this file does is it:
 * 1) Creates connection to database.
 * 2) Gets data from database.
 * 3) Encodes data to JSON. So this data can then be used by Android Application.
 * 4) Close database connection.
 */
 require_once $_SERVER['DOCUMENT_ROOT'].'/Clarity/Connection.php';
 require_once $_SERVER['DOCUMENT_ROOT'].'/Clarity/ReceiveAPI.php';

 $server = new Connection();
 $receive = new ReceiveAPI();

 //Retrieve information.
 $row = $_POST['row'];

//Connect to database.
$server->connectDB();
$output = $receive->getAllData($row); //basically method to query database.
print(json_encode($output)); //output is result of the query given back to app.

//Disconnect from database.
$server->disconnectDB();
?>

Đây là một ví dụ tôi đã sử dụng gần đây. Chỉ cần ghi chú trong tệp php. Tôi nhập Connection.phpt this chỉ xử lý kết nối với cơ sở dữ liệu. Vì vậy, chỉ cần thay thế mã đó bằng mã của bạn để kết nối với MYSQL db. Ngoài ra, tôi đã nhập SendAPI.php (mà bạn có thể bỏ qua) Đây chỉ là lớp của tôi để gửi dữ liệu. Về cơ bản, nó chứa một số truy vấn mà tôi muốn sử dụng. Chẳng hạn như sendAccelerationData (). Về cơ bản, lớp tương tự như lớp của các thủ tục được lưu trữ.

Cách tôi kết nối với cơ sở dữ liệu trong lớp Connection.php của tôi.

//Connect to a database.
public function connectDB()
{
    //Connect to SQL server.
    $this->connection = mysql_connect($this->hostName,$this->user,$this->password);

    if (!$this->connection) 
    {
        die('Could not connect: ' . mysql_error());
    }
    //Print("Connected to MySQL. </br>");

    //Select Database to query.
    $db_selected = mysql_select_db($this->database);
    if (!$db_selected) 
    {
        die('Could not select database' . mysql_error());
    }
    //Print("Database \"$this->database\" selected. </br>");
}

//Disconnect from database.
public function disconnectDB() 
{
    mysql_close($this->connection);
}
}

Lưu ý trong các thông báo lỗi, tôi đã in ra db giản đồ chẳng hạn như tên db / tên bảng. Đây chỉ là sự cố. Tôi khuyên chống lại điều này. BẠN KHÔNG muốn hiển thị thông tin đó cho người dùng.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Không thể thực thi các truy vấn trong khi các truy vấn không có bộ đệm khác đang hoạt động lỗi trong vòng lặp

  2. RegEx với preg_match để tìm và thay thế một chuỗi SIMILAR

  3. Làm cách nào để gửi email tự động từ các bản ghi MySQL?

  4. Thêm người dùng khác vào MySQL trong Kubernetes

  5. Thoát MySQL mà không cần khởi động lại trên El Capitan