B4A工具包OhhTools文章合集
原因分析:根据错误提示,知道是因为JDK8,引入了新的时间格式化函数parse,而HuTool工具包用的是新的jdk编译,因此群友使用旧的JDK编译B4A程序,运行时,导致错误的出现
解决方案:安装最新版的JDK即可,建议安装351版本以上,B4A也建议更新到最新的V12正式版,可以使用跟多的新函数
环境安装套件已放后台,后台回复关键字
B4A_OhhTools工具包
,即可获取下载链接
•1.下载解压包•2.把解压包里面
AndroidSDK
文件夹,解压到,D,E,F
随便一个磁盘•3.安装JAVA,如果电脑已经有JAVA请核对版本是否大于JDK 351
版本,如果低于请卸载旧版java,然后双击"jdk-8u351-windows-x64.exe
"安装包,进行java安装,一路,下一步,下一步即可,建议都使用默认路径•4.安装B4A,如果已经安装旧版的B4A卸载干净后,双击"B4A_v12_正式版.exe
"安装包,进行B4A安装建议,下一步,下一步,建议默认就好•5.配置B4A•5.1. 现在D,E,F
磁盘创建一个名叫"B4A_Libs
"的文件夹,用于存放B4A额外类库•5.2.打开B4A,点击tools
->IDE Options
->中文简体
,设置中文语言•5.3.打开B4A,点击"工具
->配置路径
->配置javac
路径(默认安装:C:\Program Files\Java\jdk1.8.0_351\bin\javac.exe
)"•5.4.打开B4A,点击"工具->配置路径
->配置android.jar
路径(默认安装:E,D,F:\F:\AndroidSDK\platforms\android-33\android.jar
)"•5.5.打开B4A,点击"工具->配置路径
->配置额外类库
路径(默认安装:E,D,F:\F:\B4A_Libs
)"
1.引入OhhTool工具类
1.1. 下载工具类后,把压缩包里面的所有文件复制到额外类库
文件夹下即可
1.2. 在B4A
里面引用OhhTool即可调用里面的工具类ohhMySQLHelper
Dim MySQL As ohhMySQLHelper
1.在开始前,先认识一下B4A里面的集合对象map
,list
1.1.MAP
对象相当于VB
里面的字典(Dictionary)
集合,都是键值对
集合,而且键都是唯一
的,同样的我们也可以把它理解成JSON字符串里面的{}
花括号对象,
示例:
1.1.1.往map
里面装数据
Dim mp As Map
mp.Initialize
mp.Put("A","1")
mp.Put("B","2")
mp.Put("C","3")
log(mp) 输出的结果:{A=1, B=2, C=3}
1.1.2.取出map
里面所有键值对
For i = 0 To mp.Size - 1
Log("键: " & mp.GetKeyAt(i))
Log("值: " & mp.GetValueAt(i))
Next
1.1.3.取出B键的值2,类似VB的dic.item("B")
,这里只是把item()
改成get()
即可
Log(mp.Get("B")) 输出的结果:2
1.2.List
列表集合,类似于VB的数组
或者集合对象collections
,但是跟VB.NET
的List
泛型对象非常相似
示例:
1.2.1.往List
里面装数据
Dim lst As List
lst.Initialize
lst.Add("A")
lst.Add("B")
lst.Add("C")
Log(lst) 输出的结果:[A, B, C]
1.2.2.取出List
里面所有元素
For i=0 To lst.Size-1
Log(lst.Get(i))
Next
1.2.3.取出下标位2的值,同样类似vb数组
的,索引从0
开始,所以去第二的元素就是1
,同样使用的是get()
方法
Log(lst.Get(1)) 输出的结果:B
2.介绍一下数据库操作的几个函数和作用,及数据结构
2.1 Initialize
和Initialize2
函数都是初始化类的,相当于VB
的new
关键字
•包含以下参数:
序号 | 参数名 | 描述 |
---|---|---|
1 | eventname | B4A事件名称,用于触发事件时回调的函数 |
2 | user | 数据库账号 |
3 | password | 数据库密码 |
4 | host | 数据库地址 |
5 | dbname | 数据库名称 |
•方法2,增加以下参数:
序号 | 参数名 | 描述 |
---|---|---|
6 | port | 数据库端口 |
7 | character | 数据库连接编码(utf-8,gbk,gb2312) |
8 | serverTimezon | 时区(UTC,GMT%2B8) |
2.2 IsInitialized
检测数据库链接对象是否初始化,以下是用法示例
注意:这里最好添加延时,超过延时了退出循环(方式出现死循环)
Do While msql.IsInitialized=False
Sleep(0)
''延时处理
''................
Loop
2.3 ExecuteNonQuery
函数用于执行无返回的SQL
命令语句INSERT, UPDATE, DELETE
等命令语句
msql.ExecuteNonQuery("update t_test set A=123 where id=1")
2.4 ExecuteQueryFristRow
函数用于执行查询语句Select
,且只返回第一行数据,数据结构为map
对象
Dim mp As Map=msql.ExecuteQueryFristRow("SELECT * FROM t_user")
''取出全部字段和值
For i = 0 To mp.Size - 1
Log("字段名称: " & mp.GetKeyAt(i))
Log("字段值: " & mp.GetValueAt(i))
Next
''取出某个字段的值
log(mp.get("字段名称")) ''上文已经有介绍map用法
2.5 ExecuteQuery
和ExecuteQuery2
函数用于执行查询语句Select
,且返回全部数据;这两个的函数区别在于但会的数据结构不一样,ExecuteQuery
返回的数据结构是List
对象里面包含N多个map
对象,每个map
就是数据表里面的一行数据;ExecuteQuery2
返回的数据结构是List
对象里面包含N多个List
对象,而里面的每个list
对象就是就是数据表里面的一行数据,使用时可以根据数据解析需要,调用不同的方法
''方法1取数
Dim lst As List=msql.ExecuteQuery("SELECT * FROM t_user")
For Each mp As Map In lst
For i = 0 To mp.Size - 1
Log("字段名称: " & mp.GetKeyAt(i))
Log("字段值: " & mp.GetValueAt(i))
Next
Next
''方法1取数
Dim lst As List=msql.ExecuteQuery2("SELECT * FROM t_user")
For Each ls As List In lst
For i = 0 To ls.Size-1
Log("字段值: " & ls.Get(i))
Next
Next
2.6 ExecuteQueryToJson
函数用于执行查询语句Select
,且返回全部数据,而数据结构是一个JSON字符串
Dim jsonstr As String=msql.ExecuteQueryToJson("SELECT * FROM t_user")
Dim js As JSONParser ''引用JSON类库
js.Initialize(jsonstr)
Dim lst As List =js.NextArray
For Each mp As Map In lst
For i = 0 To mp.Size - 1
Log("字段名称: " & mp.GetKeyAt(i))
Log("字段值: " & mp.GetValueAt(i))
Next
Next
2.7 ExecuteQueryTableList
函数用于返回当前数据库的所有表名称
Dim lst As List=msql.ExecuteQueryTableList
For Each ls As List In lst
For i = 0 To ls.Size-1
Log("表名: " & ls.Get(i))
Next
Next
2.8 ExecuteQueryColumnList
和ExecuteQueryColumnList2
函数用于返回指定数据表的所有字段名称,字段类型,字段描述,二者的区别是是否指定数据库,数据表
Dim lst As List=msql.ExecuteQueryColumnList("t_test")
For Each mp As Map In lst
For i = 0 To mp.Size - 1
Log("名称: " & mp.GetKeyAt(i))
Log("值: " & mp.GetValueAt(i))
Next
Next