支持access的php框架,让我们一起用开源数据库和开源框架废弃Access

一、为什么要废弃Access?

1.客户的机子上需要安装access的驱动

ps:这个比较烦人,大家都知道部署越简单越好,安装这个对用户来说太繁琐了.

2.操作时性能不佳

ps:用过access的人们都知道,这个东西数据量大的时候查询起来很费时间.

3.没有事务支持

实际项目中很多操作需要原事务支持的,至于事务的存在大家应该都懂,access咱们就不说它多坏了

4.平台支持问题

如果我们把我们的项目部署在linux上,这个时候估计就歇菜了.

二、怎么用开源的东西废弃Access

1.这里我们推荐使用sqlite,至于sqlite是什么大家应该比较清楚,

简单而言:类似access,本地型文件数据库,支持事务,标准sql,性能在开源本地文件数据库中挺好.支持其他操作系统.

2.数据库的操作用什么框架呢?

这里就推荐使用moon.orm标准版.

三、用实际例子来看看sqlite

1.使用sqlite的管理工具.(推荐sqliteExpert)

85369be9c19edf83f58bf2f64846131f.png

2.建立如下库表

三张表:班级、 学生、分数

3bed0f9e785b2df5ca8ac19fc1661177.gif

CREATE TABLE [Student]([ID] INTEGER NOT NULL PRIMARY KEY ON CONFLICT ROLLBACK,[Name] VARCHAR(50) NOT NULL,[Age] INT NOT NULL,[BirthDay] DATETIME NOT NULL,[Sex] BOOLEAN NOT NULL,[Class_ID] INTEGER NOT NULL REFERENCES [Class]([ID]));CREATE TABLE [Class]([ID] INTEGER NOT NULL PRIMARY KEY ON CONFLICT ROLLBACK,[ClassName] VARCHAR(50) NOT NULL,[ClassLevel] INT NOT NULL);CREATE TABLE [Score]([ID] INTEGER NOT NULL PRIMARY KEY ON CONFLICT ROLLBACK,[Score] INT NOT NULL,[Student_ID] INTEGER NOT NULL REFERENCES [Student]([ID]));

3bed0f9e785b2df5ca8ac19fc1661177.gif

3.使用代码生成器

32c17f254b3b89ec1df92dd8477b4a40.png

4.配置数据库连接

5561c7931bb1d6dc06d2204eed466d01.png

5.生成实体层代码

9675c23d8fe22e96f3a14ce604dc48c3.png

6.将生成的实体代码放入您的开发项目中

4efce65a2fa5db784506abc189d9d2bb.png

e3e21b9c0d01209c5f18595f1238983e.png

7.配置您的项目

c4eefc695abab71c19993a7c2aca4885.png

8.开始编码

3bed0f9e785b2df5ca8ac19fc1661177.gif

usingSystem;usingMoon_Sqlite;usingMoon.Orm;usingMoon.Orm.Util;namespacetestsome

{classProgram

{public static void Main(string[] args)

{//添加数据 using (var db=Db.CreateDefaultDb()) {//开启事务功能 db.TransactionEnabled=true;/*清空数据表

db.Remove();

db.Remove();

db.Remove();*/ //添加数据 Class cl=newClass();

cl.ClassName="班级"+DateTime.Now.ToString();

cl.ClassLevel=1;

db.Add(cl);

Console.WriteLine("添加[班级]成功,ID={0}",cl.ID);

Student stu=newStudent();

stu.Age=12;

stu.BirthDay=DateTime.Now;

stu.Class_ID=cl.ID;

stu.Name="张三"+DateTime.Now;

stu.Sex=true;

db.Add(stu);

Console.WriteLine("添加[学生]成功,ID={0}",stu.ID);

Score sco=newScore();

sco.Score_=98;

sco.Student_ID=stu.ID;

db.Add(sco);

Console.WriteLine("添加[分数]成功,ID={0}",stu.ID);//跟新数据 Score update=newScore();

update.Score_=100;

update.WhereExpression=ScoreSet.ID.Equal(sco.ID);

db.Update(update);

}//查询数据 using (var db=Db.CreateDefaultDb()) {//连接查询 var mqlJoin=ScoreSet.SelectAll()

.InnerJoin(StudentSet.Select(StudentSet.Name))

.InnerJoin(ClassSet.Select(ClassSet.ID.AS("ClassID"),ClassSet.ClassName))

.ON(ScoreSet.Student_ID.Equal(StudentSet.ID)

.And(StudentSet.Class_ID.Equal(ClassSet.ID) )

);//查看当前sql var sql=mqlJoin.ToDebugSQL();var list=db.GetDictionaryList(mqlJoin);//展示数据 list.ShowInConsole();//让我们无需实体类 string sql2=mqlJoin.ToParametersSQL();

dynamic dlist=db.GetDynamicList(sql2,"自定义类名");foreach (dynamic entity indlist) {

Console.WriteLine(entity.ID+" "+entity.Score+" "+entity.Student_ID+" "+entity.Name+" "+entity.ClassID+" "+entity.ClassName);

}//获取实体集 var entityList=db.GetEntities(ScoreSet.SelectAll().Where(ScoreSet.ID.BiggerThan(0)));

}

Console.Write("Press any key to continue . . .");

Console.ReadKey(true);

}

}

}

3bed0f9e785b2df5ca8ac19fc1661177.gif

03bf3dfe0589ed28f5c623725c1f8ea5.png

该项目源代码下载

此项目开源直接运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值