📜  使用PHP和Volley Android在MySQL中进行CRUD操作–插入数据(1)

📅  最后修改于: 2023-12-03 15:22:19.401000             🧑  作者: Mango

使用PHP和Volley Android在MySQL中进行CRUD操作 – 插入数据

在开发Android应用程序时,我们经常需要将数据存储在MySQL数据库中并进行相应的CRUD操作。本文将介绍如何使用PHP和Volley Android在MySQL中进行插入数据的操作。

前提条件

在开始之前,你需要以下工具:

  • 一台运行Apache、MySQL和PHP的服务器。
  • 一个MySQL数据库。
  • Android Studio。
步骤一:创建数据库

首先,我们需要创建一个数据库,并在其中创建一个数据表。以下是一个示例SQL语句:

CREATE DATABASE android_crud;
USE android_crud;

CREATE TABLE contacts (
  id INT(11) NOT NULL AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL,
  email VARCHAR(50) NOT NULL,
  phone VARCHAR(15) NOT NULL,
  PRIMARY KEY (id)
);

该SQL语句将创建一个名为android_crud的数据库,其中包含一个名为contacts的数据表。该数据表包含一个自增长的ID字段,以及名为nameemailphone的字符串字段。

步骤二:创建PHP文件

接下来,我们需要创建一个名为insert_contact.php的PHP文件,该文件将处理插入数据的操作。以下是该文件的示例代码:

<?php
// 数据库连接参数
$host = "localhost";
$user = "database_user";
$password = "database_password";
$database = "android_crud";

// 创建数据库连接
$con = mysqli_connect($host, $user, $password, $database);

// 检查连接是否成功
if(mysqli_connect_errno()){
    echo "连接数据库失败: " . mysqli_connect_error();
}

// 获取POST请求中的数据
$name = $_POST["name"];
$email = $_POST["email"];
$phone = $_POST["phone"];

// 构造插入数据的SQL语句
$sql = "INSERT INTO contacts (name, email, phone) VALUES ('$name', '$email', '$phone')";

// 执行SQL语句
if(mysqli_query($con, $sql)){
    echo "数据插入成功";
}else{
    echo "数据插入失败: " . mysqli_error($con);
}

// 关闭数据库连接
mysqli_close($con);
?>

该PHP文件将通过POST请求获取要插入的数据,并将其插入到数据表中。

步骤三:创建Android应用程序

接下来,我们需要在Android Studio中创建一个基本的应用程序,并使用Volley库与PHP文件进行通信。

添加Volley库

首先,我们需要在build.gradle文件中添加Volley库的依赖项。在这里我们使用的是com.android.volley:volley:1.2.0版本。

dependencies {
    // 其他依赖项...
    implementation 'com.android.volley:volley:1.2.0'
}
创建布局文件

接下来,我们需要创建一个布局文件,该文件包含用于输入联系人详细信息的表单。以下是布局文件的示例代码:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp">

    <EditText
        android:id="@+id/editTextName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:hint="姓名"
        android:inputType="text" />

    <EditText
        android:id="@+id/editTextEmail"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:hint="电子邮件"
        android:inputType="textEmailAddress" />

    <EditText
        android:id="@+id/editTextPhone"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:hint="电话号码"
        android:inputType="phone" />

    <Button
        android:id="@+id/buttonSave"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="24dp"
        android:text="保存" />

</LinearLayout>

该布局文件包含三个EditText和一个Button。当用户点击“保存”按钮时,应用程序将使用Volley库向PHP文件发送POST请求,以插入数据。

创建Java文件

最后,我们需要创建一个名为InsertContactActivity.java的Java文件,并在其中实现向服务器插入数据的逻辑。以下是该文件的示例代码:

public class InsertContactActivity extends AppCompatActivity {

    // 插入数据的PHP文件URL
    private static final String INSERT_URL = "http://localhost/insert_contact.php";

    private EditText editTextName;
    private EditText editTextEmail;
    private EditText editTextPhone;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_insert_contact);

        // 初始化布局控件
        editTextName = findViewById(R.id.editTextName);
        editTextEmail = findViewById(R.id.editTextEmail);
        editTextPhone = findViewById(R.id.editTextPhone);

        // 为“保存”按钮设置点击监听器
        findViewById(R.id.buttonSave).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // 获取要插入的数据
                String name = editTextName.getText().toString().trim();
                String email = editTextEmail.getText().toString().trim();
                String phone = editTextPhone.getText().toString().trim();

                // 创建POST请求
                StringRequest postRequest = new StringRequest(Request.Method.POST, INSERT_URL,
                        new Response.Listener<String>() {
                            @Override
                            public void onResponse(String response) {
                                // 处理服务器响应
                                Toast.makeText(getApplicationContext(), response, Toast.LENGTH_SHORT).show();
                                finish();
                            }
                        },
                        new Response.ErrorListener() {
                            @Override
                            public void onErrorResponse(VolleyError error) {
                                // 处理请求错误
                                Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_SHORT).show();
                            }
                        }
                ) {
                    @Override
                    protected Map<String, String> getParams() {
                        // 将要插入的数据添加到POST请求参数中
                        Map<String, String> params = new HashMap<>();
                        params.put("name", name);
                        params.put("email", email);
                        params.put("phone", phone);
                        return params;
                    }
                };

                // 将POST请求添加到Volley请求队列中
                VolleySingleton.getInstance(getApplicationContext()).addToRequestQueue(postRequest);
            }
        });
    }
}

该Java文件首先获取用户在EditText控件中输入的联系人详细信息。接下来,它使用Volley库创建一个POST请求,将数据添加到请求参数中,并将请求添加到请求队列中。当服务器返回响应时,它将在屏幕上显示一个消息,并关闭当前活动。

结论

现在,你已经学会了如何使用PHP和Volley Android在MySQL中进行插入数据的操作了。你可以使用类似的方法来实现其他的CRUD操作,如查询、更新和删除数据。