Code:
' INSERT
db1.DataColumn = CreateMap("category_id": 2, "product_code": "T003", "product_name": "YoYo", "product_price": 9.25)
db1.Save
We can also write using Map.Put("ColumnName", "Value")
B4X:
' INSERT
Dim rec As Map
rec.Initialize
rec.Put("category_id", cid)
rec.Put("product_code", data.Get("code"))
rec.Put("product_name", data.Get("name"))
rec.Put("product_price", data.Get("price"))
Dim db1 As ORM
db1.Initialize(con)
db1.Table = "tbl_products"
db1.DataColumn = rec
db1.Save
Example of modified
PostProductByCategory from Web API template.
[CODE lang="b4x" title="ProductHandler.bas" highlight="20-31"]Sub PostProductByCategory (cid As Int) As HttpResponseMessage
#region Documentation
' #Body = {<br> "code": "product_code",<br> "name": "product_name",<br> "price": "product_price"<br>}
' #Desc1 = (N/A)
' #Desc2 = Add a new product by category id
' #Elems = 4
#End region
Dim con As SQL = Main.DB.GetConnection
Dim strSQL As String
Try
strSQL = Main.queries.Get("GET_CATEGORY_BY_ID")
Dim res As ResultSet = con.ExecQuery2(strSQL, Array As String(cid))
If res.NextRow Then
Dim data As Map = Utility.RequestData(Request)
If data.IsInitialized Then
'strSQL = Main.queries.Get("ADD_NEW_PRODUCT_BY_CATEGORY")
con.BeginTransaction
'con.ExecNonQuery2(strSQL, Array As String(cid, data.Get("code"), data.Get("name"), data.Get("price")))
' INSERT
Dim rec As Map
rec.Initialize
rec.Put("category_id", cid)
rec.Put("product_code", data.Get("code"))
rec.Put("product_name", data.Get("name"))
rec.Put("product_price", data.Get("price"))
Dim db1 As ORM
db1.Initialize(con)
db1.Table = "tbl_products"
db1.DataColumn = rec
db1.Save
strSQL = Main.queries.Get("GET_LAST_INSERT_ID")
Dim NewId As Int = con.ExecQuerySingleResult(strSQL)
strSQL = Main.queries.Get("GET_PRODUCT_BY_CATEGORY_AND_ID")
Dim res As ResultSet = con.ExecQuery2(strSQL, Array As String(cid, NewId))
con.TransactionSuccessful
Dim List1 As List
List1.Initialize
Do While res.NextRow
Dim Map2 As Map
Map2.Initialize
For i = 0 To res.ColumnCount - 1
If res.GetColumnName(i) = "product_price" Then
Map2.Put(res.GetColumnName(i), res.GetDouble2(i))
Else If res.GetColumnName(i) = "category_id" Or res.GetColumnName(i) = "id" Then
Map2.Put(res.GetColumnName(i), res.GetInt2(i))
Else
Map2.Put(res.GetColumnName(i), res.GetString2(i))
End If
Next
List1.Add(Map2)
Loop
HRM.ResponseCode = 201
HRM.ResponseMessage = "Created"
HRM.ResponseData = List1
End If
Else
HRM.ResponseCode = 404
HRM.ResponseError = "Category Not Found"
End If
Catch
LogError(LastException)
HRM.ResponseCode = 422
HRM.ResponseError = "Error Execute Query"
End Try
Main.DB.CloseDB(con)
Return HRM
End Sub[/CODE]