Good day
UPDATE 2020-05-19: Please use this library instead
		
		
	
	
		 
	
The attached class will help you in creating basic sql statements for CRUD functionality using BANanoSQL.
We feature CREATE, UPDATE, UPDATE & DELETE statements, we also have added, creating a table. Whilst this class will work using BANanoSQL callbacks, I have found out that using .ExecuteWait is far more better. This is the same approach that we have followed with
BANanoSQLite - Accessing SQLite DB using (inline) PHP and
BANanoMySQL - Accessing MySQL DB using (inline) PHP
Reproduction.
In Main.Process_Globals, we define BANanoSQL
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
In Main.BANano_Ready, we open the DB and then create a table.
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
We start to open another page as soon as this is done. On that page, we define our BANanoUtils class and also the BANanoSQL object in Process_Globals.
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
On Init, we open the db and then when a user selects the buttons we process some CRUD. As we are using .ExecuteWait in our subs, we need to add the word Wait at the end of each sub routine name.
Let's look at simple inserts... i.e. WHERE CLAUSE
CREATE / INSERT
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
READ
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
UPDATE
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
DELETE
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
The other included inserts, updates and deletes demonstrate how to do bulk operations.
NB: DELETE ALL Records from a table.
Currently to delete all records from a table, one needs to tweak the delete a little and use..
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Otherwise it does not work. This is a documented error as of writing.
Ta!
			
			UPDATE 2020-05-19: Please use this library instead
The attached class will help you in creating basic sql statements for CRUD functionality using BANanoSQL.
We feature CREATE, UPDATE, UPDATE & DELETE statements, we also have added, creating a table. Whilst this class will work using BANanoSQL callbacks, I have found out that using .ExecuteWait is far more better. This is the same approach that we have followed with
BANanoSQLite - Accessing SQLite DB using (inline) PHP and
BANanoMySQL - Accessing MySQL DB using (inline) PHP
Reproduction.
In Main.Process_Globals, we define BANanoSQL
			
				B4X:
			
		
		
		Private SQL As BANanoSQLIn Main.BANano_Ready, we open the DB and then create a table.
			
				B4X:
			
		
		
		Sub BANano_Ready()
    Dim alasql As BANanoSQLUtils
    alasql.Initialize
    'open the bananosql db called tests
    SQL.OpenWait("tests","tests")
    'create items table with the structure
    Dim els As Map = CreateMap()
    els.Put("id", alasql.DB_STRING)
    els.Put("jsoncontent", alasql.DB_STRING)
    els.Put("tabindex", alasql.DB_INT)
    els.put("parentid", alasql.DB_STRING)
    Dim rs As ResultSet = alasql.CreateTable("items", els, "id")
    rs.result = SQL.ExecuteWait(rs.query,Null)
    Log(rs)
    'open another page
    pgIndex.init
End SubWe start to open another page as soon as this is done. On that page, we define our BANanoUtils class and also the BANanoSQL object in Process_Globals.
			
				B4X:
			
		
		
		    Private alasql As BANanoSQLUtils
    Private SQL As BANanoSQLOn Init, we open the db and then when a user selects the buttons we process some CRUD. As we are using .ExecuteWait in our subs, we need to add the word Wait at the end of each sub routine name.
Let's look at simple inserts... i.e. WHERE CLAUSE
CREATE / INSERT
			
				B4X:
			
		
		
		Sub insert1wait
    ClearFirst
    'initialize bananosqlite
    alasql.Initialize()
    'create a record
    Dim rec As Map = CreateMap()
    rec.Put("id", "A")
    rec.Put("jsoncontent", "B")
    rec.Put("tabindex", 1)
    rec.put("parentid", "form")
    'indicate field data types
    alasql.AddStrings(Array("id"))
    alasql.AddIntegers(Array("tabindex"))
    'execute the insert
    Dim rs As ResultSet = alasql.Insert("items", rec)
    rs.result = SQL.ExecuteWait(rs.query, rs.args)
    '
    elCommand.SetText("Command: " & rs.query)
    elArgs.SetText("Arguements: " & BANano.ToJson(rs.args))
    elNotif.SetText("Result: " & BANano.ToJson(rs.result) & " rowid!")
End SubREAD
			
				B4X:
			
		
		
		Sub Select1wait
    ClearFirst
    'initialize bananosqlite
    alasql.Initialize()
    'indicate field data types
    alasql.AddStrings(Array("id"))
    'execute select where
    Dim rs As ResultSet = alasql.SelectWhere("items", Array("*"), CreateMap("id":"A"), Array("id"))
    rs.result = SQL.ExecuteWait(rs.query, rs.args)
    '
    elCommand.SetText("Command: " & rs.query)
    elArgs.SetText("Arguements: " & BANano.ToJson(rs.args))
    elNotif.SetText("Result: " & BANano.ToJson(rs.result))
End SubUPDATE
			
				B4X:
			
		
		
		Sub update1wait
    ClearFirst
    'initialize bananosqlite
    alasql.Initialize()
    'define field types
    alasql.AddStrings(Array("id","parentid"))
    'generate random data
    dummy.Initialize
    Dim parentid As String = dummy.Rand_Company_Name
    'define query data & execute
    Dim rs As ResultSet = alasql.UpdateWhere("items", CreateMap("parentid":parentid), CreateMap("id":"A"))
    rs.result = SQL.ExecuteWait(rs.query, rs.args)
    '
    elCommand.SetText("Command: " & rs.query)
    elArgs.SetText("Arguements: " & BANano.ToJson(rs.args))
    elNotif.SetText("Result: " & BANano.ToJson(rs.result))
End SubDELETE
			
				B4X:
			
		
		
		Sub Delete1wait
    ClearFirst
    'initialize bananosqlite
    alasql.Initialize()
    'define field types
    alasql.AddStrings(Array("id"))
    'define query data & execute
    Dim rs As ResultSet = alasql.DeleteWhere("items", CreateMap("id":"A"))
    rs.result = SQL.ExecuteWait(rs.query, rs.args)
    elCommand.SetText("Command: " & rs.query)
    elArgs.SetText("Arguements: ")
    elNotif.SetText("Result: " & BANano.ToJson(rs.result))
End SubThe other included inserts, updates and deletes demonstrate how to do bulk operations.
NB: DELETE ALL Records from a table.
Currently to delete all records from a table, one needs to tweak the delete a little and use..
			
				B4X:
			
		
		
		DELETE FROM [Table] WHERE 1=1Otherwise it does not work. This is a documented error as of writing.
Ta!
Attachments
			
				Last edited by a moderator: 
			
		
	
							 
				 
 
		