让我们一起用开源数据库和开源框架废弃Access

一、为什么要废弃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

此项目开源直接运行

时间: 2024-10-13 01:02:47

让我们一起用开源数据库和开源框架废弃Access的相关文章

【转】 MySQL与PostgreSQL:该选择哪个开源数据库?哪一个更好?

转载地址:http://www.infoq.com/cn/news/2013/12/mysql-vs-postgresql 如果打算为项目选择一款免费.开源的数据库,那么你可能会在MySQL与PostgreSQL之间犹豫不定.MySQL与PostgreSQL都是 免费.开源.强大.且功能丰富的数据库.你主要的问题可能是:哪一个才是最好的开源数据库,MySQL还是PostgreSQL呢?该选择哪一个开源数据 库呢? 在选择数据库时,你所做的是个长期的决策,因为后面如果再改变决定将是非常困难且代价高

功能齐全、效率一流的免费开源数据库导入导出工具(c#开发,支持SQL server、SQLite、ACCESS三种数据库),每月借此处理数据5G以上

软件名:DataPie 功能:支持SQL server.SQLite.ACCESS数据库的导入.导出.存储过程调用,支持EXCEL2007.EXCEL2003.ACCESS2007. CSV文件导入数据库,支持EXCEL.CSV.ZIP.ACCESS文件方式导出,支持数据拆分导出及自定义SQL查询与导出. 开发背景:作者从事财务管理工作,主要是出具集团的内部财务报表,随着公司精细化管理的需求,管理报表的数据量急速增长, 依赖EXCEL加工处理数据已经变得极为困难,因此团队全面转向关系数据库进行数

一款直接时空处理分析的开源数据库---geomesa

一款直接时空处理分析的开源数据库---geomesa,可用于交通轨迹数据存储分析等相关领域, 在分布式列数据库的基础上进行扩展,目前支持Accumulo, HBase, Cassandra, and Kafka等作为底层存储. 地址链接: http://www.geomesa.org/

开源数据库 H2, HSQLDB, DERBY, PostgreSQL, MySQL区别/对比图表( 附加翻译)

开源数据库 H2, HSQLDB, DERBY, PostgreSQL, MySQL区别/对比图表 浪天涯博主翻译: referential integrity 参考完整性transactions 事物unicode 统一码interface 命令 界面 接口data size db limit 数据库数据大小限制temporary table 临时表支持materialized view 物化视图(快照)indexes 索引union 联合查询intersect 交集查询except exce

MySQL、PostgreSQL、Ingres r3、MaxDB等开源数据库的详细比较

1.MySQL 5 作为当今最流行的开放源码数据库之一,MySQL数据库为用户提供了一个相对简单的 解决方案,适用于广泛的应用程序部署,能够降低用户的TCO.MySQL是一个多线程.结构化查询语言(SQL)数据库服务器.MySQL的执行性能高, 运行速度快,容易使用. MySQL包括以下几个关键优势: ◆ 可靠的性能和服务MySQL向公众提供所有数据库服务器软件的早期版本,都是利用开放源码进行为期几个月的测试之后才发布作为生产之用. ◆ 易于使用和部署MySQL的结构体系易于定制,运行速度快,其

开源数据库选型

一: 关系型数据库发展现状 在 DB-Engines 的排名上,Oracle 和 MySQL 两个产品长期霸占了前两名的位置,在最新的排名数据上(2017年6月),Oracle和MySQL分列第一和第二位,Microsoft SQL Server一直是唯一具有追随潜质的产品: 针对排名前三的开源数据库:MySQL.PostgreSQL.MongoDB,受欢迎程度趋势如下: 从趋势上看,MySQL 在开源数据库受欢迎程度榜单上稳居第一: 2014年以来,PostgreSQL.MongoDB呈持续增

【云快讯】之五十四《AWS提供Aurora数据库替代开源的MySQL》

点击上面的链接文字,可以快速关注"东方云洞察"公众号 经过九个月的测试,亚马逊Web服务现在提供Aurora极光数据库服务,作为一个完整的商业服务,它定位为一个高性能的替代广泛使用的开源数据库MySQL产品. "对于大多数的工作负荷,我们推荐使用亚马逊极光数据库,"马特 Wood-亚马逊网络服务产品策略总经理."我们期待客户会使用极光作为默认选择." 该公司声称,极光性能是一个标准的MySQL五倍,同时提供了一个高端的商业数据库的可靠性. 亚马逊

开源数据库中间件MYCAT产品介绍与企业实战

开源产品就像一块布,不能拿来就用,我们要量体裁衣,把它变成一件衣服.互联网开发无小事,因为互联网应用要面对海量信息,一个小小的问题也能被无限放大,就像汪洋中的蝴蝶效应.一个互联网应用遇到的问题可能与系统.网络.应用.架构.数据等各个层面的问题有关,只有耐心发现并处理好每一个相关层面的问题,才能最终形成一款好的互联网应用.时刻提醒自己当下一波巨浪到来前我们会准备的更好! <开源数据库中间件MYCAT产品介绍与企业实战>  下载地址:http://download.csdn.net/detail/

开源数据库 Sharding 技术 (Share Nothing)

注:此文首发于 <程序员>杂志 2008 年 7 月刊. 从 Shard 到 Sharding "Shard" 这个词英文的意思是"碎片",而作为数据库相关的技术用语,似乎最早见于大型多人在线角色扮演游戏(MMORPG)中."Sharding" 姑且称之为"分片". Sharding 不是一门新技术,而是一个相对简朴的软件理念.如您所知,MySQL 5 之后才有了数据表分区功能,那么在此之前,很多 MySQL 的潜