在之前学习中,我们已经学习了如何使用
jaguar_query_postgres
对实体类进行绑定生成一个bean
类,使用该bean
类对数据库进行操作,那么,如果是涉及到多个表进行查询,就显得有点疲软了,所以今天我们来学习一下如何使用sql语句进行查询!
1. 介绍
使用
jaguar_query_postgres
其实是基于jaguar_postgres
库进行封装的,所以,我们只要是集成了jaguar_query_postgres
都可以使用SQL语句进行查询
2. 使用SQl
我们通过对
PgAdapter
这个类的进一步追逐,可以发现pg.PostgreSQLConnection
这个类,通过PgAdapter.connection
去获取,该类就是主要执行SQL语句的,可以使用pg.PostgreSQLConnection.execute(SQL)
去执行,该方法是返回的是一个Future<int>
,我们来试一下吧
首先,我们的数据库中的_chat
表有一条数据,现在我们通过SQL语句对他进行删除
import 'package:jaguar_query_postgres/jaguar_query_postgres.dart';
final PgAdapter pgAdapter = new PgAdapter(
'rhymedb',
username: 'postgres',
password: '123456');
main() async{
await pgAdapter.connect();
int i=await pgAdapter.connection.execute("DELETE FROM _chat WHERE id='1' ");
print(i);
}
然后我们运行一下
可以看到,我们已经成功的输出了1
来看看数据库
数据已经被我删除掉了
这里,我们来解释一下,该
execute(SQL)
方法只能对数据库进行增
,删
,改
,来了解一下,它还有两个参数
-
Map<String, dynamic> substitutionValues
替代值,可替换SQL语句中的key到对应的值,默认为空 -
int timeoutInSeconds
超时时间,单位为秒,默认30秒
接下来,我们来了解一下如何使用查询语句吧,将通过SQl语句查询到对应的值出来,我们可以使用pgAdapter.connection.mappedResultsQuery(SQL)
方法
final PgAdapter pgAdapter = new PgAdapter(
'rhymedb',
username: 'postgres',
password: '123456');
main() async{
await pgAdapter.connect();
List<Map<String, Map<String, dynamic>>> map=await pgAdapter.connection.mappedResultsQuery('SELECT * FROM _chat');
print(map);
}
查询到的是一个map数组,该数组可以通过窗口输出,这里先添加一条数据,然后再查询看一下
可以看到,输出了一个map数据,该数据是通过以表名作为一个键,然后我们再添加一条数据查询看看
ok,很明显,都是通过表明作为键,对应的值作为值
很明显的看到,这样就实现了使用了SQL语句进行查询了。
今天就到这里了
课后作业:执行一下多表查询,多表更新
如果想继续学习DartVM服务器开发,请关注我,学习更多骚操作!