让我们一起用开源数据库和开源框架废弃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. ...
随机推荐
- Third Day:正式编程第三天,学习实践内容TextView跑马灯、AutoCompleteTextView、multiAutoCompleteTextView以及ToggleButton、checkedBox、RadioButton等相关实践
2.针对Focused的TextView跑马灯(文字较多一行无法显示)效果 针对单个TextView的跑马灯效果,可直接在TextView控件参数中添加三个属性: android:singleLine ...
- ASP.NET Core 数据保护(Data Protection 集群场景)【下】
前言 接[中篇],在有一些场景下,我们需要对 ASP.NET Core 的加密方法进行扩展,来适应我们的需求,这个时候就需要使用到了一些 Core 提供的高级的功能. 本文还列举了在集群场景下,有时候 ...
- 在.NET Core中遭遇循环依赖问题"A circular dependency was detected"
今天在将一个项目迁移至ASP.NET Core的过程中遭遇一个循环依赖问题,错误信息如下: A circular dependency was detected for the service of ...
- UI控件(UIToolbar)
@implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; _toolbar = [[UIToolbar all ...
- Redis系列(四)-低成本高可用方案设计
关于Redis高可用方案,看到较多的是keepalived.zookeeper方案. keepalived是主备模式,意味着总有一台浪费着.zookeeper工作量成本偏高. 本文主要介绍下使用官方s ...
- 开发必备的Windows小技巧
在Windows中我们经常会遇到各种小问题,而这些小问题又确实在影响着工作效率,如果能解决这些小问题,那么就能在一定程度上提高工作效率,保证心情愉悦.今天我就来分享一下几个自认为比较有用的小技巧. 保 ...
- SQL Server 变更数据捕获(CDC)
标签:SQL SERVER/MSSQL SERVER/数据库/DBA/字段/对象更改 概述 变更数据捕获用于捕获应用到 SQL Server 表中的插入.更新和删除活动,并以易于使用的关系格式提供这些 ...
- Web3DGame之路,Babylonjs 和TypeScript学习笔记(一)
一个开源的Webgl3D引擎,javascript or typescript http://www.babylonjs.com 啥是WebGL WebGL 网页图形库,简称WebGL,是一个JS库, ...
- C#设计模式之组合
IronMan之组合 在上个篇幅中讲到怎么把“武器”装饰到“部件”上,这个篇幅呢,还是要讲到“武器”,不过呢是关于“武器”使用的. 本篇介绍"武器"的合理使用方式,不说废话,直接来 ...
- 在Windows中安装Memcached
Memcached是一个高并发的内存键值对缓存系统,它的主要作用是将数据库查询结果,内容,以及其它一些耗时的计算结果缓存到系统内存中,从而加速Web应用程序的响应速度. Memcached最开始是作为 ...