本章介绍$(db)sql;...函数的多种用法。
描述:
在数据源中执行指定的sql语句,返回结果集。
语法:
$(db)sql;…
备注:
在数据源db中执行指定的SQL,返回SQL的执行结果,其中db为数据源名称,(db)省略使用前一个语句指定的数据源,如果前一个语句没有指定则从当前已连接的数据源中任意取一个使用。
当数据源名称为空时,该语句中支持使用简单SQL。
参数:
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数据源中查找EID为1的雇员信息。 |
3 |
$select * from EMPLOYEE where EID in (?) or GENDER=?;[1,3,5,7],"M" |
(db)省略,使用前一个语句中指定的数据源demo,查找EID分别为[1,3,5,7],性别为M的雇员。 |
|
A |
B |
|
1 |
$(demo)insert into EMPLOYEE (EID, NAME) values(?,?);100,"test" |
|
Insert语句。
|
2 |
[51,52,53,54] |
|
|
3 |
for A2 |
|
|
4 |
|
$insert into STATECAPITAL (STATEID) values(?);A3 |
(db)省略,使用前一个语句中指定的数据源demo,循环将A2序列中的成员作为参数传到B4语句中。 |
Ø 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)省略,则使用前一个语句的指定数据源;将EID为10的雇员NAME更新为Peter。 |
3 |
$(sql)update Family set Name='Rose' where Eid=?;2 |
使用sql数据源,更新family中Eid为2的成员姓名。 |
相关概念:
描述:
利用集算器jdbc,在db中执行sql语句,返回结果集。
语法:
$(db)sql;…
备注:
在指定数据库db中,执行sql语句,执行后返回结果集。执行时,用st. executeQuery()执行,并返回结果集。
注意执行时数据库db需为已连接的状态。
在JDBC中以$select或$with开头的字串,将被解释为简单SQL去执行。
参数:
sql |
sql 语句. 例如,select * from table;sql必须为select/insert/delete/update语句中的一种。 |
(db) |
数据源名称,(db)省略则解释为简单sql。 |
… |
sql中的参数值。 |
返回值:
结果集
示例:
在数据库中执行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,查询数据文件:
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();
//用executeQuery方法执行简单SQL,查询cities.txt文件中的数据
ResultSet set = st.executeQuery ("$select * from cities.txt ");
ResultSetMetaData meta = set.getMetaData();
while (set.next()) {
for(int i=0; i<meta.getColumnCount(); i++){
System.out.print(set.getObject(i+1) + "\t");
}
System.out.println();
}
}
catch(Exception e){
System.out.println(e);
}
finally{
//关闭连接
if (con!=null) {
try {
con.close();
}
catch(Exception e) {
System.out.println(e);
}
}
}