Bài 15- Thêm mới dữ liệu vào MongoDB trong Android Kotlin

bài 14 các bạn đã biết cách kết nối và truy suất dữ liệu, và đặc biết có lưu ý về việc đổi địa chỉ IP trong cấu hình của mongod.cfg. Trong bài này Tui cố tình chuyển quán Cafe khác để viết hướng dẫn nhằm mục đích thay đổi địa chỉ IP của Laptop để cố tình làm cho MongoDB Service nó chạy sai om sòm để các bạn nhớ lại rằng cứ mỗi lần bị đổi IP thì phải sửa lại mongod.cfg và chạy lại service (Lưu ý khi ta đã có Server riêng và có public IP thì hầu như chả bao giờ phải sửa lại, bạn có thể bỏ ra 1 ít tiền để mua VPS sài thử cho nó có cảm giác nha).

bài 14 thì IP Laptop của Tui do quán cafe phân giải là: 172.16.96.173 còn trong bài 15 này thì IP là: 192.168.1.137 . Dó đó khi mở lại Project trong bài 14 để tiếp tục làm chức năng thêm mới dữ liệu Tui phải sửa lại IP kết nối là 192.168.1.137 và dĩ nhiên trước đó phải chạy lại Service đã được lưu ý trong bài 14 (Còn bạn thì bạn tự kiểm tra lại máy mình nha, lấy IP theo đúng máy của bạn).

Sau khi kết thúc bài học này bạn phải thêm được dữ liệu vào MongoDB, giao diện như sau:

Để lưu dữ liệu vào MongoDB ta dùng các lệnh sau:

[code language=”java”]
var connectionString = MongoClientURI(“mongodb://192.168.1.137:27017”)
var mongoClient = MongoClient(connectionString)

var database = mongoClient.getDatabase(“QuanLySanPham”)
var collection = database.getCollection(“Product”)
var doc = Document(“Ma”, “P999”)
.append(“Ten”, “Thuốc trị hôi nách”)
.append(“DonGia”, 35)
collection.insertOne(doc)
[/code]

Ta sẽ tạo một Document và đưa giá trị cũng như các thuộc tính vào sao cho khớp với bảng trong MongoDB.

Lệnh insertOne để lưu document vào MongoDB.

Chi tiết các bước ta làm như sau:

Thiết kết màn hình Thêm Product. Cách thêm một màn hình mới Tui đã chỉ rất chi tiết trong bài 14 rồi, các bạn tự xem lại nha.

Màn hình Thêm Product đặt tên là: ThemProductActivity. Tui chụp cấu trúc để dễ tưởng tượng:

Lưu ý là mở lại Project cũ, bài này chỉ thêm “ThemProductActivity” thôi nha các tình yêu.

Giao diện XML như sau:

[code language=”xml”]
<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:app=”http://schemas.android.com/apk/res-auto”
xmlns:tools=”http://schemas.android.com/tools”
android:orientation=”vertical”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
tools:context=”.ThemProductActivity”>

<TextView
android:id=”@+id/textView2″
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:text=”Mã Product:”
android:textSize=”20sp” />

<EditText
android:id=”@+id/edtMa”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:ems=”10″
android:inputType=”textPersonName” />

<TextView
android:id=”@+id/textView”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:text=”Tên Product:”
android:textSize=”20sp” />

<EditText
android:id=”@+id/edtTen”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:ems=”10″
android:inputType=”textPersonName” />
<TextView
android:id=”@+id/textView3″
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:text=”Đơn giá:”
android:textSize=”20sp” />

<EditText
android:id=”@+id/edtDonGia”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:ems=”10″
android:inputType=”numberDecimal” />

<Button
android:onClick=”xuLyThemProduct”
android:id=”@+id/btnLuu”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:text=”Lưu”
android:textSize=”20sp” />
</LinearLayout>
[/code]

Giao diện khi chạy lên sẽ như sau:

Tiếp tục ta bổ sung coding cho ThemProductActivity:

[code language=”java”]
package com.communityuni.androidkotlintomongodb

import android.os.AsyncTask
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.EditText
import android.widget.Toast
import com.communityuni.model.Product
import com.mongodb.MongoClient
import com.mongodb.client.MongoCollection
import com.mongodb.client.MongoDatabase
import com.mongodb.MongoClientURI
import org.bson.Document

class ThemProductActivity : AppCompatActivity() {
lateinit var edtMa:EditText
lateinit var edtTen:EditText
lateinit var edtDonGia:EditText
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_them_product)

addControls()
}

private fun addControls() {
edtMa=findViewById(R.id.edtMa)
edtTen=findViewById(R.id.edtTen)
edtDonGia=findViewById(R.id.edtDonGia)
}
fun xuLyThemProduct(view:View)
{
var ma=edtMa.text.toString()
var ten=edtTen.text.toString()
var gia=edtDonGia.text.toString()
var p=Product(ma,ten,gia.toDouble())

ThemProductTask().execute(p)
}
inner class ThemProductTask : AsyncTask<Product, Void, Boolean>()
{
override fun onPreExecute() {
super.onPreExecute()
}
override fun doInBackground(vararg p0: Product?): Boolean {
var p:Product?=p0[0]
try {
var connectionString = MongoClientURI(“mongodb://192.168.1.137:27017”)
var mongoClient = MongoClient(connectionString)

var database = mongoClient.getDatabase(“QuanLySanPham”)
var collection = database.getCollection(“Product”)
var doc = Document(“Ma”, p?.Ma)
.append(“Ten”, p?.Ten)
.append(“DonGia”, p?.DonGia)
collection.insertOne(doc)
return true
} catch (ex: Exception) {
Log.e(“LOI”, ex.toString())
}
return false
}
override fun onPostExecute(result: Boolean?) {
super.onPostExecute(result)
if(result==true)
{
Toast.makeText(applicationContext,”Thêm thành công”,Toast.LENGTH_LONG).show();
finish()
}
else
{
Toast.makeText(applicationContext,”Thêm thất bại”,Toast.LENGTH_LONG).show();
}
}
}
}
[/code]

Cũng như bài 14, ta phải dùng đa tiến trình để xử lý. Các kiến thức và Kotlin Tui đã trình bày chi tiết trong link này với đầy đủ kiến thức và Ebook, hoặc các bạn có thể đăng ký học Kotlin qua Video tại đây.

Bây giờ trong MainActivity ta gọi lệnh mở màn hình ThemProductActivity:

[code language=”java”]
fun ThemProduct(view:View)
{
var intent= Intent(this,ThemProductActivity::class.java)
startActivity(intent)
}
[/code]

Chạy lên ta sẽ được kết quả như mong muốn.

Các bạn có thể tải source code đầy đủ ở đây: Source code thêm mới dữ liệu MongoDB trong Android Kotlin.

Và các Em chú ý là Project này sẽ được dùng cho bài sau nữa nha, nên bắt buộc phải hiểu và làm được bài này cho tốt.

Bài học Sau Tui sẽ hướng dẫn các bạn các kỹ thuật tương tác dữ liệu (sửa, xóa) trực tiếp từ Android Kotlin tới MongoDB, các bạn chú ý theo dõi.

Các khóa học online khác, bạn có thể tham khảo tại đây:

https://unica.vn/?aff=11929

Chúc các bạn thành công!