DartVM服务器开发(二十五)-使用SQl语句

在之前学习中,我们已经学习了如何使用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语句对他进行删除
image.png

1
2
3
4
5
6
7
8
9
10
11
12
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);
}

然后我们运行一下
image.png

可以看到,我们已经成功的输出了1来看看数据库
image.png
数据已经被我删除掉了
这里,我们来解释一下,该execute(SQL)方法只能对数据库进行,来了解一下,它还有两个参数

  • Map<String, dynamic> substitutionValues替代值,可替换SQL语句中的key到对应的值,默认为空
  • int timeoutInSeconds超时时间,单位为秒,默认30秒

接下来,我们来了解一下如何使用查询语句吧,将通过SQl语句查询到对应的值出来,我们可以使用pgAdapter.connection.mappedResultsQuery(SQL)方法

1
2
3
4
5
6
7
8
9
10
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数组,该数组可以通过窗口输出,这里先添加一条数据,然后再查询看一下
image.png
image.png
可以看到,输出了一个map数据,该数据是通过以表名作为一个键,然后我们再添加一条数据查询看看
image.png
image.png
ok,很明显,都是通过表明作为键,对应的值作为值

很明显的看到,这样就实现了使用了SQL语句进行查询了。

评论系统未开启,无法评论!