$(db)sql;…

阅读(675) 标签: dbsql,

本章介绍$(db)sql;...函数的多种用法。

$(db)sql;…

描述:

在数据源中执行指定的sql语句,返回结果集。

语法:

$(db)sql;…

备注:

在数据源db中执行指定的SQL,返回SQL的执行结果,其中db为数据库连接,(db)省略使用前一个语句指定的数据源,如果前一个语句没有指定则从当前已连接的数据源中任意取一个使用。

参数:

sql

sql 语句. 例如,select * from table;sql必须为select/insert/delete/update语句

(db)

数据源名称

sql中的参数值

返回值:

序表

示例:

Ø  select语句

 

A

 

1

$select * from EMPLOYEE

(db)省略,不存在前一个语句指定的数据源,且当前没有已连接的数据源,所以报错:数据库连接工厂不存在

2

$(demo)select * from EMPLOYEE where EID=?;1

demo数据源中查找EID1的雇员信息

3

$select * from EMPLOYEE where EID in (?) or GENDER=?;[1,3,5,7],"M"

(db)省略,使用前一个语句中指定的数据源demo,查找EID分别为[1,3,5,7],性别为M的雇员

 

Ø  insert语句

 

A

B

 

1

$(demo)insert into EMPLOYEE (EID, NAME) values(?,?);100,"test"

 

2

[51,52,53,54]

 

3

for A2

 

 

4

 

$insert into STATECAPITAL (STATEID) values(?);A3

(db)省略,使用前一个语句中指定的数据源demo

 

Ø  delete语句

 

A

 

1

$(demo)delete from EMPLOYEE where EID=? or EID=?;100,101

 

2

$delete from EMPLOYEE where EID in(?);[1,5,7,9]

 

3

$delete from EMPLOYEE where NAME='Rebecca'

(db)省略,并且不存在前一个语句指定的数据源,故从当前已连接的数据源中任意取一个使用

 

Ø  update语句

 

A

 

1

$(demo)update EMPLOYEE set NAME=?, GENDER=?

where EID=?;"testnew","M",100

 

2

$update EMPLOYEE set NAME='Peter' where EID=10

(db)省略,则使用前一个语句的指定数据源;将EID10的雇员NAME更新为Peter

3

$(sql)update Family set Name='Rose' where Eid=?;2

使用sql数据源,更新familyEid2的成员姓名

相关概念:

db.query()

$(db)sql;…

描述:

利用集算器jdbc,在数据库中执行指定的sql语句,返回结果集。

语法:

$(db)sql;

备注: 

在指定数据库db中,执行sql语句,执行后返回结果集。执行时,用st. executeQuery()执行,并返回结果集。注意执行时数据库db为已连接的状态。若语句中存在参数,固定以arg开头。

JDBC中以selectwith开头的字串,将被解释为简单SQL去执行,如果字串后面有()则被解释为dfx文件名。例如:selectTab()表示dfx文件名。

参数:

sql

sql 语句. 例如,select * from table;sql必须为select/insert/delete/update语句

(db)

数据源名称

sql中的参数值

返回值:

结果集

示例:

public void testDataServer() {

Connection con = null;

java.sql.Statement st;

try{

Class.forName("com.esproc.jdbc.InternalDriver");

con= DriverManager.getConnection("jdbc:esproc:local://"); 

st=con.createStatement();

//查询demo数据库student表中年龄大于16的学生信息

ResultSet set = st.executeQuery("$(demo)select * from STUDENTS where AGE>?;16");

printRs(set);

}

catch(Exception e){

System.out.println(e);

}

finally{

//关闭连接

if (con!=null) {

try {

con.close();

}

catch(Exception e) {

System.out.println(e);

}

}

}

}

$()sql;…

描述:

通过简单sql语句查询外部表数据。

语法:

$()sql; 

备注:

从外部数据文件中查询数据;外部数据文件可以直接以【文件名.后缀名】作为表名来使用,使用的语法类似于从数据库中查询用的SQL语句,称为简单SQL。外部数据可以类似普通序表查询,称为外部表。

目前支持的外部表有:txtcsvxlsxxlsbtx(集文件)ctx(组表文件)。外部表文件均认为有标题,查询外部表时既可以用相对路径也可以用绝对路径,相对路径相对于集算器主目录。

关于简单SQL支持的所有语法,请参考函数db.query(sql)

参数: 

sql

简单sql语句,例如,select * from filename.txt

简单sql中的参数值

注:$()sql;…中的括号可以省略。

返回值:

序表

示例:

 

A

 

1

$()select * from Persons.txt

查询外部表Persons.txt中的数据,结果返回序表

2

$select * from D:/Orders.txt

使用绝对路径方式查询,结果返回序表

3

$select * from Persons.csv where Id_P=? or Id_P>?;2,2

查询Id_P大于2或等于2的数据

4

$select  *  from Persons.txt  P  join Orders.txt  O  on P.Id_P = O.Id_P

多表联合查询

 

5

$select  distinct(Id_P)  from Orders.btx

去重复值查询