让我们一起用开源数据库和开源框架废弃Access
一、为什么要废弃Access?
1.客户的机子上需要安装access的驱动
ps:这个比较烦人,大家都知道部署越简单越好,安装这个对用户来说太繁琐了.
2.操作时性能不佳
- 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.Remove<ScoreSet>();
- db.Remove<StudentSet>();
- db.Remove<ClassSet>();
- */
- //添加数据
- Class cl=new Class();
- cl.ClassName="班级"+DateTime.Now.ToString();
- cl.ClassLevel=;
- db.Add(cl);
- Console.WriteLine("添加[班级]成功,ID={0}",cl.ID);
- Student stu=new Student();
- stu.Age=;
- 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_=;
- sco.Student_ID=stu.ID;
- db.Add(sco);
- Console.WriteLine("添加[分数]成功,ID={0}",stu.ID);
- //跟新数据
- Score update=new Score();
- update.Score_=;
- 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()));
- }
- Console.Write("Press any key to continue . . . ");
- Console.ReadKey(true);
- }
- }
- }
ps:用过access的人们都知道,这个东西数据量大的时候查询起来很费时间.
3.没有事务支持
实际项目中很多操作需要原事务支持的,至于事务的存在大家应该都懂,access咱们就不说它多坏了
4.平台支持问题
如果我们把我们的项目部署在linux上,这个时候估计就歇菜了.
二、怎么用开源的东西废弃Access
1.这里我们推荐使用sqlite,至于sqlite是什么大家应该比较清楚,
简单而言:类似access,本地型文件数据库,支持事务,标准sql,性能在开源本地文件数据库中挺好.支持其他操作系统.
2.数据库的操作用什么框架呢?
这里就毛遂自荐,推荐使用moon.orm标准版.
源代码下载地址:http://pan.baidu.com/s/1i3xj0f7
(关于源码解压请邮件 qsmy_qin@163.com)
三、用实际例子来看看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.开始编码
该项目源代码下载
地址:http://pan.baidu.com/s/1vyyPg
此项目开源直接运行
让我们一起用开源数据库和开源框架废弃Access的更多相关文章
- 【转】 MySQL与PostgreSQL:该选择哪个开源数据库?哪一个更好?
转载地址:http://www.infoq.com/cn/news/2013/12/mysql-vs-postgresql 如果打算为项目选择一款免费.开源的数据库,那么你可能会在MySQL与Post ...
- MySQL、PostgreSQL、Ingres r3、MaxDB等开源数据库的详细比较
1.MySQL 5 作为当今最流行的开放源码数据库之一,MySQL数据库为用户提供了一个相对简单的 解决方案,适用于广泛的应用程序部署,能够降低用户的TCO.MySQL是一个多线程.结构化查询语言(S ...
- MySQL全世界最流行的开源数据库软件
誉天全国首推全球市场占有率第二的数据库——MySQL培训课程,阿里巴巴.新浪等知名企业正在使用MySQL数据库系统,而这方面的人才需求也是供不应求,誉天作为国内2014年首批ORACLE官方授权MyS ...
- Java免费开源数据库、Java嵌入式数据库、Java内存数据库
Java免费开源数据库.Java嵌入式数据库.Java内存数据库 http://blog.csdn.net/leiyinsu/article/details/8597680
- Android开发——使用LitePal开源数据库
前言:之前使用Android内置的数据库,感觉一大堆SQL语句,一不小心就错了,很难受,学习了这个LItePal的开源数据库,瞬间觉得Android内置的数据库简直是垃圾般的存在 LitePal Gi ...
- LitepalNewDemo【开源数据库ORM框架-LitePal2.0.0版本的使用】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 本Demo使用的是LitePal2.0.0版本,对于旧项目如何升级到2.0.0版本,请阅读<赶快使用LitePal 2.0版本 ...
- Android开发——使用LitePal开源数据库框架
前言:之前使用Android内置的数据库,感觉一大堆SQL语句,一不小心就错了,很难受,学习了这个LItePal的开源数据库框架,瞬间觉得Android内置的数据库简直是垃圾般的存在 LitePal ...
- 我发起了一个 .Net 开源 数据库 项目 SqlNet
大家好 , 我发起了一个 .Net 开源 数据库 项目 SqlNet . 项目计划 是 用 C# 写一个 关系数据库 . 可以先参考我之前写的 2 篇文章 : 谈谈数据库原理 https://w ...
- Android Hawk数据库 github开源项目
Android Hawk数据库 github开源项目 Hawk 是一个很便捷的数据库 . 操作数据库仅仅需一行代码 , 能存不论什么数据类型 . github 地址: https://github. ...
随机推荐
- SqlServer存储过程模板
create procedure [spname]([spvariable])asbegin begin transaction begin try --具体sql过程 commit; end t ...
- 用Fmx调用Bass.dll
先上图 帮亲戚做个小软件,选用FMX,因为画面不会像vcl那样在图片多的时候闪烁.还能添加动画 但是MediaPlayer播放音乐视频真是不给力,视频没想到好办法.音频方面想到之前万一的Bass.ll ...
- 一步步学习javascript基础篇(5):面向对象设计之对象继承(原型链继承)
上一篇介绍了对象创建的几种基本方式,今天我们看分析下对象的继承. 一.原型链继承 1.通过设置prototype指向“父类”的实例来实现继承. function Obj1() { this.name1 ...
- Curator Framework的基本使用方法
Curator Framework提供了简化使用zookeeper更高级的API接口.它包涵很多优秀的特性,主要包括以下三点: 自动连接管理:自动处理zookeeper的连接和重试存在一些潜在的问题: ...
- 迷你MVVM框架 avalonjs 实现上的几个难点
经过两个星期的性能优化,avalon终于实现在一个页面绑定达到上万个的时候不卡顿的目标(angular的限制是2000).现在稍作休息,总结一下avalon遇到的一些难题. 首先是如何监控的问题.所有 ...
- Apache Mina实战
Mina介绍 Mina可以用于快速的开发基于网络通信的应用,特别是在开发手机端的游戏应用时,使用的较为普遍.本文简单介绍了一个用Mina搭建的一个简易讨论组,通过该应用可以对Mina的基本用法用途有个 ...
- Nginx服务器之 Nginx的基本配置
本文使用 Linux centos系统 一.Nginx虚拟主机的配置 虚拟主机:通常情况下,为了使每个服务器可以供更多用户使用,可以将一个服务器分为很多虚拟的子服务器,每个子服务器都是互相独立的.这些 ...
- PHP分布式中Redis实现Session
方法一:找到配置文件php.ini,修改为下面内容,保存并重启服务 session.save_handler = redis session.save_path = "tcp://127.0 ...
- react9 生命周期
<body><!-- React 真实 DOM 将会插入到这里 --><div id="example"></div> <!- ...
- 关于laravel 5.3 使用redis缓存出现 找不到Class 'Predis\Client' not found的问题
昨天使用5.3.版本的laravel框架开发公司新项目, 发现将cache和session设置为了redis,执行了一下首页访问. 如图: laravel 版本号 简单配置一下控制器路由, Route ...