【小白专用 已验证24.6.18】C# SqlSugar操作MySQL数据库实现增删改查-CSDN博客
通过NuGet包管理器搜索SqlSugar(MySql还要安装MySql.Data、Newtonsoft.Json)包并安装
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig(){ConnectionString = "server=.;uid=sa;pwd=@jhl85661501;database=SqlSugar4XTest",DbType = DbType.SqlServer,//设置数据库类型IsAutoCloseConnection = true,//自动释放数据务,如果存在事务,在事务结束后释放InitKeyType = InitKeyType.Attribute //从实体特性中读取主键自增列信息});//用来打印Sql方便你调试
db.Aop.OnLogExecuting = (sql, pars) =>{Console.WriteLine(sql + "\r\n" + db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)));Console.WriteLine();}; /*查询*/
var list = db.Queryable<StudentModel>().ToList();//查询所有
var getById = db.Queryable<StudentModel>().InSingle(1);//根据主键查询
var getByWhere = db.Queryable<StudentModel>().Where(it=>it.Id==1).ToList();//根据条件查询
var total = 0;
var getPage = db.Queryable<StudentModel>().Where(it => it.Id == 1).ToPageList(1,2,ref total);//根据分页查询
//多表查询用法 http://www.codeisbug.com/Doc/8/1124/*插入*/
var data = new Student() { Name = "jack" };
db.Insertable(data).ExecuteCommand();
//更多插入用法 http://www.codeisbug.com/Doc/8/1130/*更新*/
var data2 = new Student() { Id =1, Name = "jack" };
db.Updateable(data2).ExecuteCommand();
//更多更新用法 http://www.codeisbug.com/Doc/8/1129/*删除*/
db.Deleteable<StudentModel>(1).ExecuteCommand();
实体类用法
//如果实体类名称和表名不一致可以加上SugarTable特性指定表名
[SugarTable("Student")]
public class StudentModel
{//指定主键和自增列,当然数据库中也要设置主键和自增列才会有效[SugarColumn(IsPrimaryKey=true,IsIdentity =true)]public int Id { get; set; }public string Name { get; set; }
}
根据实体类创建表
db.CodeFirst.SetStringDefaultLength(200/*设置varchar默认长度为200*/).InitTables(typeof(StudentModel));//执行完数据库就有这个表了
[SugarTable("T_DouPoClass")]public class StudentInfo{[SugarColumn(ColumnName = "F_Name",IsPrimaryKey =true)]public string Name { get; set; }[SugarColumn(ColumnName = "F_Gender")]public string Gender { get; set; }[SugarColumn(ColumnName = "F_Class")]public string Class { get; set; }[SugarColumn(ColumnName = "F_Grade")]public string Grade { get; set; }}
SqlSugar是通过Queryable、Updateable、Deleteable和Insertable实现的增删改查。
public static List<StudentInfo> Query(){var db = GetInstance();return db.Queryable<StudentInfo>().ToList();}public static void Insert(StudentInfo student){var db = GetInstance();db.Insertable<StudentInfo>(student).ExecuteCommand();}
public static bool Delete(StudentInfo student){var db = GetInstance();db.Deleteable<StudentInfo>(student).ExecuteCommand();return true;}public static bool Update(StudentInfo student){var db = GetInstance();db.Updateable<StudentInfo>(new StudentInfo {Grade = student.Grade,Class= student.Class,Name= student.Name, Gender="异火"}).UpdateColumns(s => new {s.Gender}).WhereColumns(s => s.Name).ExecuteCommand();return true;}
class Student{[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]public int Id { get; set; }public string? Name { get; set; }public int Age { get; set; }public string? Home { get; set; }}
Student student = new Student();student.Name = "小明";student.Age = 20;student.Home = "湖北武汉";db.Insertable(student).ExecuteCommand(); List<Student> students = new List<Student>();students.Add(new Student() { Name = "小红", Age = 25, Home = "福建福州"});students.Add(new Student() { Name = "小钢", Age = 25, Home = "福建厦门" });students.Add(new Student() { Name = "小王", Age = 25, Home = "福建泉州" });students.Add(new Student() { Name = "小绿", Age = 25, Home = "江西南昌" });students.Add(new Student() { Name = "小吴", Age = 25, Home = "湖北襄阳" });db.Insertable(students).ExecuteCommand(); var list = db.Queryable<Student>().ToList();db.Queryable<Student>().Where(it => it.Age > 20).ToList();查单条var single = db.Queryable<Student>().Single(it => it.Id == 1);查字段,以Name为例var list3 = db.Queryable<Student>().Select(it => it.Name).ToList(); 以修改id=3的学生的home为“广东珠海”为例var single = db.Queryable<Student>().Single(it => it.Id == 3);single.Home = "广东珠海";db.Updateable(single).ExecuteCommand();条件删除,以删除id=1为例db.Deleteable<Student>().Where(it => it.Id == 1).ExecuteCommand();根据主键数组删除,以删除id=2和3为例db.Deleteable<Student>().In(new int[] {2, 3}).ExecuteCommand();
SqlSugarClient db => GetInstance();
//执行sql语句,处理
//1.执行sql,转成list
List<teacher> list1 = db.Ado.SqlQuery<teacher>("select * from teacher where tsex=@tsex", new { tsex = "女" });
Console.WriteLine(list1.ToJsonString());
//2.转成dynamic
dynamic list2 = db.Ado.SqlQueryDynamic("select * from UserInfo");
Console.WriteLine(list2.Length);
//3.转成json数据
string list3 = db.Ado.SqlQueryJson("select * from UserInfo");
Console.WriteLine(list3);
//4.返回int
int count = db.Ado.SqlQuery<int>("select count(*) from UserInfo").FirstOrDefault();
Console.WriteLine(count);//5.返回键值对类型
Dictionary<string, string> list4 = db.Ado.SqlQuery<KeyValuePair<string, string>>("select UserID,Name from UserInfo").ToDictionary(q => q.Key, q => q.Value);
Console.WriteLine(list4.ToJsonString());//6.返回List<string[]> 集合
List<string[]> list5 = db.Ado.SqlQuery<string[]>("select * from teacher where tsex=@tsex", new { tsex = "女" });
Console.WriteLine(list5.ToJsonString());
//返回 DataTable
DataTable dataTable = db.Ado.GetDataTable("select * from teacher where tsex=@tsex", new { tsex = "女" });SqlSugarClient db => GetInstance();
//更方便的获取第一行第一列
string result1 = db.Ado.GetString(" select name from UserInfo where UserID=@UserID", new { UserID = 1 });
Console.WriteLine(result1);
int count = db.Ado.GetInt("select count(*) from UserInfo");
Console.WriteLine(count);
double result2 = db.Ado.GetDouble("select avg(degree) from score where cno=@cno ", new System.Data.SqlClient.SqlParameter("@cno", "3-105"));
Console.WriteLine(result2);decimal result3 = db.Ado.GetDecimal(" select avg(degree) from score");
Console.WriteLine(result3);
// 创建待插入数据var data = new bsae_info() { id = 2 ,name = "Sandy" , age = 13};// 插入数据db.Insertable(data).ExecuteCommand();// 执行插入操作db.Ado.ExecuteCommand("INSERT INTO bsae_info (id, name, age) VALUES (@id,@name,@age)",new {id = data.id, name = data.name, age=data.age });