本章主要展示有关数据库的代码参考,比如从数据库中用SQL读入序表、返回用SQL计算的单值结果、用数据库的存储过程返回(多个)序表、令数据库执行SQL语句以修改数据、用程序代码连接和断开数据库、由程序代码自行管理事务的提交、取得数据库错误信息、使用游标分批读入较多数据、将序表(排列)写入数据库等。
|
A |
|
1 |
=demo.query("select * from EMPLOYEE") |
|
2 |
=demo.query("select * from EMPLOYEE where EID=?",1) |
|
|
A |
|
1 |
=demo.query@1("select count(*) from EMPLOYEE") |
|
2 |
=demo.query@1("select count(*) from EMPLOYEE where SALARY>?",10000) |
|
|
A |
|
1 |
=db.proc("{call proc1(?,?)}",:101:"o":a,:101:"o":b) |
执行存储过程,返回两个序表 |
2 |
=A1(1) |
第一个序表 |
3 |
=A1(2) |
第二个序表 |
4 |
=a |
用变量名访问第一个序表 |
|
A |
|
1 |
>demo.execute("update SCORES set SCORE=? where STUDENTID=10",90) |
更新 |
2 |
=create(wineID,wineName,wineType,wineProduction,wineStock).record([100,"Amaretto","Liqueur","France",2130,200,"Tia Maria","Liqueur","Jamaica",1570]) |
|
3 |
>demo.execute(A2,"update LIQUORS set STOCK=? where NAME=?", wineStock, wineName) |
批量更新 |
4 |
>demo.execute([1,3,5],"delete from ADVENTURE where AID=?",~) |
批量删除 |
5 |
>demo.execute(A2,"insert into LIQUORS (LID, NAME, TYPE, PRODUCTION, STOCK) values (?,?,?,?,?)",wineID, wineName, wineType, wineProduction, wineStock) |
批量插入
|
|
A |
|
1 |
=connect("demo") |
连接数据库 |
2 |
>A1.close() |
断开连接 |
|
A |
B |
|
1 |
=connect@e("demo") |
|
建立连接 |
2 |
=A1.execute@k(.…) |
|
|
3 |
=A1.error() |
|
读取上一条数据库执行的错误信息 |
4 |
if A3==0 |
>A1.commit() |
无错则提交 |
5 |
else |
>A1.rollback() |
有错则回滚 |
6 |
>A1.close() |
|
关闭连接 |
|
A |
|
1 |
=connect@e("demo") |
|
2 |
… |
|
3 |
=A1.error() |
错误代码 |
4 |
=A1.error@m() |
错误信息 |
|
A |
B |
C |
|
1 |
=demo.cursor("select * from STOCKRECORDS") |
|
|
|
2 |
for |
|
|
|
3 |
|
=A1.fetch(1000) |
|
取1000条返回成序表 |
4 |
|
if B3==null |
break |
数据取完中断 |
5 |
|
… |
|
|
|
A |
|
1 |
=demo.query("select ID, NAME,GENDER,AGE from STUDENTS") |
|
2 |
=A1.keys(ID) |
|
3 |
=demo.update(A1,STUDENTS1,ID, NAME) |
|
4 |
=demo.update@u(A1,STUDENTS1,ID, NAME) |
只生成"update" |
5 |
=demo.update@i(A1,STUDENTS1, ID, NAME) |
只生成"insert" |
6 |
=demo.update@a(A1,STUDENTS1, ID,NAME) |
先清空目标表再insert |