[TOC]
## 常规操作
### 更新
**2022/03/16**
- 新增MongoDB的驱动支持(暂不支持`Group`和`Join`)
- 新增`InsertAll`支持多数据插入
**2022/03/25**
- 新增简单的PostgreSQL驱动
### 创建实例
```
var db = IORM.GetMYSQL("MYSQL");
//新增mongodb数据库支持
var mongo = IORM.GetMongoDB("MONGODB");
//通常情况下connectString会在配置文件里设置
var connectString = GLOBAL.CONFIG.GetString("MYSQLConnect");
var connectResult = db.Connect(connectString);
if (connectResult)
{
Logger.Info("数据库连接成功!");
}
```
### 插入数据
```c#
var insertData = new Model.Company{
Id = System.Guid.NewGuid().ToString("N"),
CreateTime = DateTime.Now,
CompanyName = "梵天科技"
};
// 如果Id是自增,insertId才会有返回值
var insertId = db.Table<Model.Company>().Insert(insertData);
//新增InsertAll
var moreData = new List<Model.Company>();
moreData.Add(insertData);
moreData.Add(insertData);
//...添加更多数据
db.Table<Model.Company>().InsertAll(moreData);
```
### 更新数据
```
insertData.LoginName = "admin"
insertData.Password = "123456";
var DBItem = db.Table<Model.Company>().Where(m => m.Id == inserId);
DBItem.Update(insertData);
//只更新公司名称
DBItem.UpdateValue(m => m.CompanyName.Equals("浙江友信"));
//更新多个字段
DBItem
.SetUpdateValue(m => m.CompanyName.Equals("梵天科技"))
.SetUpdateValue(m => m.LoginName.Equals("fantian"))
.UpdateValues();
```
### 删除数据
```
var DBItem = db.Table<Model.Company>().Where(m => m.Id == inserId);
DBItem.Delete();
```
### 获取单条数据
```
var item = db.Table<Model.Company>().Where(m => m.Id == inserId).FindOne();
```
### 获取指定字段
```
item.SetFindField(m => new object[]{ m.Id, m.Title}).FindOne()
```
2022.04.22 新增 连续设置 和 单对象传参
```
item.SetFindField(m => m.Id);
item.SetFindField(m => m.Title);
item.SetFindField<Model.Person>(m => m.Name);
item.FindOne();
```
### 获取多条数据
```
var items = db.Table<Model.Company>().FindAll();
```
### 分页获取数据
```
var items = db.Table<Model.Company>().Page(10, 1).FindAll();
```
### 数据排序
```
var descItems = db.Table<Model.Company>().Desc(m => m.Id).FindAll();
var ascItems = db.Table<Model.Company>().Asc(m => m.Id).FindAll();
//排序支持多优先级
var descMore = db.Table<Model.Company>().Desc(m => m.CreateTime).Desc(m => m.Id).FindAll();
//混合优先级
var descMore = db.Table<Model.Company>().Asc(m => m.CreateTime).Desc(m => m.Id).FindAll();
```
### 分组
```
var items = db.Table<Model.Company>().Group(m => m.Province).FindAll();
```
### 获取Count
```
var count = db.Table<Model.Company>().Count();
```
### Sum运算
```
var sum = db.Table<Model.Company>().SUM(m => m.LoginCount);
```
### AVG运算
```
var avg = db.Table<Model.Company>().AVG(m => m.LoginCount);
```
### 计数字段
```
db.Table<Model.Company>().Where(m => m.Id == inserId).UpdateValue(m => m.LoginCount + 1)
```
### 语句查询 (仅MySQL支持)
```
var items = db.Query<Model.Company>("SELECT * FROM v1_company");
```
### 抛出异常
- 查看语句
```
db.Table<Model.Company>().ThrowSQLString().Count();
```
- 错误捕捉
```
db.Table<Model.Company>().ThrowOnError().Count();
```
- 关闭错误抛出
2022/04/02 更新为默认抛出错误
```
db.Table<Model.Company>().CloseThrowOnError().Count();
```