1、本文将使用SqlSugar创建Sqlite数据库,进行入门的增删改查等操作。擦,咋写着写着凌乱起来了。
SqlSugar官方文档:简单示例,1分钟入门 - SqlSugar 5x - .NET果糖网
2、环境SqlSugar V5.0版本需要.Net Framework 4.6 ,NuGet添加内容如下,安装红框中的内容就可以了。这里的数据库demo.db是自动创建的。
3、运行效果如下图 。
4、整体代码如下。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SqlSugar;
namespace ConsoleAppSqlSugar
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("启动");
// 创建数据库对象
SqlSugarClient Db = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = "datasource=demo.db",
DbType = DbType.Sqlite,
IsAutoCloseConnection = true
}, db =>
{
db.Aop.OnLogExecuting = (sql, pars) =>
{
//获取原生SQL推荐 5.1.4.63 性能OK
Console.WriteLine(UtilMethods.GetNativeSql(sql,pars));
//获取无参数化 SQL 对性能有影响,特别大的SQL参数多的,调试使用
//Console.WriteLine(UtilMethods.GetSqlString(DbType.Sqlite,sql,pars));
};
//注意多租户 有几个设置几个
//db.GetConnection(5).Aop;
});
bool isExit = true;
while (isExit)
{
Console.WriteLine("请输入:");
Console.WriteLine("1、创建数据库。");
Console.WriteLine("2、创建数据表。");
Console.WriteLine("3、查询表的所有。");
Console.WriteLine("4、插入数据。");
Console.WriteLine("5、更新数据。");
Console.WriteLine("6、删除数据。");
Console.WriteLine("7、退出");
int result;
if (int.TryParse(Console.ReadLine(),out result))
{
switch (result)
{
case 1:
Db.DbMaintenance.CreateDatabase();//达梦和Oracle不支持建库
break;
case 2:
Db.CodeFirst.InitTables<ToDos>();//所有库都支持
break;
case 3:
//查询表的所有
var list = Db.Queryable<ToDos>().ToList();
foreach (ToDos item in list)
{
Console.WriteLine("ToDoName:"+item.ToDoName+" "+ "ToDoDescription:" + item.ToDoDescription);
}
break;
case 4:
//插入
int num1=Db.Insertable(new ToDos() { ToDoName = "任务名称", ToDoDescription = "任务描述" }).ExecuteCommand();
if (num1>0)
{
Console.WriteLine("插入数据成功");
}
break;
case 5:
//更新
int num2 = Db.Updateable(new ToDos() { Id = 1, ToDoName = "任务名称更新", ToDoDescription = "任务描述更新" }).ExecuteCommand();
if (num2 > 0)
{
Console.WriteLine("更新数据成功");
}
break;
case 6:
//删除
int num3 = Db.Deleteable<ToDos>().Where(it => it.Id == 1).ExecuteCommand();
if (num3 > 0)
{
Console.WriteLine("删除数据成功");
}
break;
case 7:
isExit = false;
break;
default:
isExit = false;
break;
}
}
}
Console.WriteLine("输入回车退出程序。");
Console.ReadLine();
}
}
}
5、简单的仓储,其实官网也有很合的仓储示例。仓储简单类代码如下。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SqlSugar;
namespace ConsoleAppSqlSugar
{
//定义一个泛型仓储类,继承自SimpleClient<T>,T是一个类的泛型参数
public class SqlSugarRepository<T>:SimpleClient<T> where T:class,new()
{
//构造函数
public SqlSugarRepository()
{
//创建SqlSugarClient实例,用于数据库操作。
var db = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = "datasource=demo.db",
DbType = DbType.Sqlite,
IsAutoCloseConnection = true
});
//将创建的SqlSugarClient实例复制给继承自SimlpeClient<T>的Context属性
base.Context = db;
//配置AOP拦截器,在SQL语句执行前输出SQL语句控制器
db.Aop.OnLogExecuting = (sql, pars) =>
{
Console.WriteLine(sql); //控制台输出执行的SQL语句
};
}
}
}
调用代码如下。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SqlSugar;
namespace ConsoleAppSqlSugar
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("启动");
// 创建数据库对象
//SqlSugarClient Db = new SqlSugarClient(new ConnectionConfig()
//{
// ConnectionString = "datasource=demo.db",
// DbType = DbType.Sqlite,
// IsAutoCloseConnection = true
//}, db =>
//{
// db.Aop.OnLogExecuting = (sql, pars) =>
// {
// //获取原生SQL推荐 5.1.4.63 性能OK
// Console.WriteLine(UtilMethods.GetNativeSql(sql,pars));
// //获取无参数化 SQL 对性能有影响,特别大的SQL参数多的,调试使用
// //Console.WriteLine(UtilMethods.GetSqlString(DbType.Sqlite,sql,pars));
// };
// //注意多租户 有几个设置几个
// //db.GetConnection(5).Aop;
//});
//创建ToDos类型的仓储实例。
var toDosRepository = new SqlSugarRepository<ToDos>();
bool isExit = true;
while (isExit)
{
Console.WriteLine("请输入:");
Console.WriteLine("1、创建数据库。");
Console.WriteLine("2、创建数据表。");
Console.WriteLine("3、查询表的所有。");
Console.WriteLine("4、插入数据。");
Console.WriteLine("5、更新数据。");
Console.WriteLine("6、删除数据。");
Console.WriteLine("7、退出");
int result;
if (int.TryParse(Console.ReadLine(),out result))
{
switch (result)
{
case 1:
//Db.DbMaintenance.CreateDatabase();//达梦和Oracle不支持建库
toDosRepository.Context.DbMaintenance.CreateDatabase();
break;
case 2:
//Db.CodeFirst.InitTables<ToDos>();//所有库都支持
toDosRepository.Context.CodeFirst.InitTables<ToDos>();//所有库都支持
break;
case 3:
//查询表的所有
//var list = Db.Queryable<ToDos>().ToList();
var list = toDosRepository.Context.Queryable<ToDos>().ToList();
foreach (ToDos item in list)
{
Console.WriteLine("ToDoName:"+item.ToDoName+" "+ "ToDoDescription:" + item.ToDoDescription);
}
break;
case 4:
//插入
//int num1=Db.Insertable(new ToDos() { ToDoName = "任务名称", ToDoDescription = "任务描述" }).ExecuteCommand();
int num1 = toDosRepository.Context.Insertable(new ToDos() { ToDoName = "任务名称", ToDoDescription = "任务描述" }).ExecuteCommand();
if (num1>0)
{
Console.WriteLine("插入数据成功");
}
break;
case 5:
//更新
//int num2 = Db.Updateable(new ToDos() { Id = 1, ToDoName = "任务名称更新", ToDoDescription = "任务描述更新" }).ExecuteCommand();
int num2 = toDosRepository.Context.Updateable(new ToDos() { Id = 1, ToDoName = "任务名称更新", ToDoDescription = "任务描述更新" }).ExecuteCommand();
if (num2 > 0)
{
Console.WriteLine("更新数据成功");
}
break;
case 6:
//删除
//int num3 = Db.Deleteable<ToDos>().Where(it => it.Id == 1).ExecuteCommand();
int num3 = toDosRepository.Context.Deleteable<ToDos>().Where(it => it.Id == 1).ExecuteCommand();
if (num3 > 0)
{
Console.WriteLine("删除数据成功");
}
break;
case 7:
isExit = false;
break;
default:
isExit = false;
break;
}
}
}
Console.WriteLine("输入回车退出程序。");
Console.ReadLine();
}
}
}