让我们一起用开源数据库和开源框架废弃Access
2015-06-22 00:00
369 查看
摘要: 1.客户的机子上需要安装access的驱动
ps:这个比较烦人,大家都知道部署越简单越好,安装这个对用户来说太繁琐了.
2.操作时性能不佳
ps:用过access的人们都知道,这个东西数据量大的时候查询起来很费时间.
3.没有事务支持
实际项目中很多操作需要原事务支持的,至于事务的存在大家应该都懂,access咱们就不说它多坏了
4.平台支持问题
如果我们把我们的项目部署在linux上,这个时候估计就歇菜了.
ps:这个比较烦人,大家都知道部署越简单越好,安装这个对用户来说太繁琐了.
2.操作时性能不佳
ps:用过access的人们都知道,这个东西数据量大的时候查询起来很费时间.
3.没有事务支持
实际项目中很多操作需要原事务支持的,至于事务的存在大家应该都懂,access咱们就不说它多坏了
4.平台支持问题
如果我们把我们的项目部署在linux上,这个时候估计就歇菜了.
简单而言:类似access,本地型文件数据库,支持事务,标准sql,性能在开源本地文件数据库中挺好.支持其他操作系统.
2.数据库的操作用什么框架呢?
这里就推荐使用moon.orm标准版.
源代码下载地址:http://pan.baidu.com/s/1i3xj0f7
2.建立如下库表
三张表:班级、 学生、分数
3.使用代码生成器
最新版本下载地址:http://lko2o.com/moon/article/9
4.配置数据库连接
5.生成实体层代码
6.将生成的实体代码放入您的开发项目中
7.配置您的项目
8.开始编码
该项目源代码下载
地址:http://pan.baidu.com/s/1vyyPg
此项目开源直接运行
ps:这个比较烦人,大家都知道部署越简单越好,安装这个对用户来说太繁琐了.
2.操作时性能不佳
ps:用过access的人们都知道,这个东西数据量大的时候查询起来很费时间.
3.没有事务支持
实际项目中很多操作需要原事务支持的,至于事务的存在大家应该都懂,access咱们就不说它多坏了
4.平台支持问题
如果我们把我们的项目部署在linux上,这个时候估计就歇菜了.
一、为什么要废弃Access?
1.客户的机子上需要安装access的驱动ps:这个比较烦人,大家都知道部署越简单越好,安装这个对用户来说太繁琐了.
2.操作时性能不佳
ps:用过access的人们都知道,这个东西数据量大的时候查询起来很费时间.
3.没有事务支持
实际项目中很多操作需要原事务支持的,至于事务的存在大家应该都懂,access咱们就不说它多坏了
4.平台支持问题
如果我们把我们的项目部署在linux上,这个时候估计就歇菜了.
二、怎么用开源的东西废弃Access
1.这里我们推荐使用sqlite,至于sqlite是什么大家应该比较清楚,简单而言:类似access,本地型文件数据库,支持事务,标准sql,性能在开源本地文件数据库中挺好.支持其他操作系统.
2.数据库的操作用什么框架呢?
这里就推荐使用moon.orm标准版.
源代码下载地址:http://pan.baidu.com/s/1i3xj0f7
三、用实际例子来看看sqlite
1.使用sqlite的管理工具.(推荐sqliteExpert)2.建立如下库表
三张表:班级、 学生、分数
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]));
3.使用代码生成器
最新版本下载地址:http://lko2o.com/moon/article/9
4.配置数据库连接
5.生成实体层代码
6.将生成的实体代码放入您的开发项目中
7.配置您的项目
8.开始编码
using System; using Moon_Sqlite; using Moon.Orm; using Moon.Orm.Util; namespace testsome { class Program { public static void Main(string[] args) { //添加数据 using (var db=Db.CreateDefaultDb()) { //开启事务功能 db.TransactionEnabled=true; /*清空数据表 db.Remove<ScoreSet>(); db.Remove<StudentSet>(); db.Remove<ClassSet>(); */ //添加数据 Class cl=new Class(); cl.ClassName="班级"+DateTime.Now.ToString(); cl.ClassLevel=1; db.Add(cl); Console.WriteLine("添加[班级]成功,ID={0}",cl.ID); Student stu=new Student(); 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=new Score(); sco.Score_=98; sco.Student_ID=stu.ID; db.Add(sco); Console.WriteLine("添加[分数]成功,ID={0}",stu.ID); //跟新数据 Score update=new Score(); 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 in dlist) { Console.WriteLine(entity.ID+" "+entity.Score+" "+entity.Student_ID+" "+entity.Name+" "+entity.ClassID+" "+entity.ClassName); } //获取实体集 var entityList=db.GetEntities<Score>(ScoreSet.SelectAll().Where(ScoreSet.ID.BiggerThan(0))); } Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } } }
该项目源代码下载
地址:http://pan.baidu.com/s/1vyyPg
此项目开源直接运行
相关文章推荐
- 辉哥用的这种方法实现ZABBIX的MYSQL批量监控
- C# 在SQLHelper外部获取存储过程返回回来的参数值
- [转]Oracle dbms_random函数用法快速生成多条测试数据
- Redis持久化
- Json判断文本框的值是否在数据库已存在
- Redis 笔记与总结2 String 类型和 Hash 类型
- 突然想把一生都奉献给MySQL
- 几款开源的图形化Redis客户端管理软件
- Memcached笔记——(三)Memcached使用总结
- Redis对于key的操作命令
- MySQL优化之——插入 更新 删除
- MySQL优化之——查询
- mysql查询存储过程和函数、视图、触发器
- 分布式内存缓存系统memcached的安装配置及基本命令
- Memcached Java Client API详解
- XMemcachedClient实例的add方法和set方法区别
- Redis配置大全
- MySQL数据库中插入中文出现乱码的解决方案
- MySql语句大全:创建、授权、查询、修改等
- Mybatis深入之DataSource实例化过程