在正式开始实现ORM之前还有一点准备工作需要完成,第一是实现一个配置类,这个很简单的就是通过静态变量来保存数据库的一些连接信息,等同于.net项目中的web.config的功能:第二需要设计实现一个sql语句的生成类来帮助生成sql语句,当前如果不实现这个类也不会影响orm的制作,之所以要做这么一个类主要有几个目的,1.减少sql语句中拼写错误的发生.2.统一解决防sql注入的问题. 下面分别说明一下这两个类的实现方式: 1.配置类DbConfig using System; using Sys…
现在开始实现ORM的主体模块,首先需要在项目中新建一个类,命名为DbAccess,然后在项目的引用中添加两个dll,分别是MySql.Data.dll和System.Data.SQLite.dll,这两个dll都可以在对应的数据库官网上下载到,为了方便我这里也提供一个下载地址.添加好dll后需要在DbAccess中添加几个名空间,具体代码如下: using System; using System.Collections; using System.Collections.Generic; us…
之前在做unity项目时发现只能用odbc连接数据库,感觉非常的麻烦,因为之前做web开发的时候用惯了ORM映射,所以我想在unity中也用一下ORM(虽然我知道出于性能的考虑这样做事不好的,不过自己的小项目吗管他的,自己爽就行了).不过现在世面上的ORM映射基本都是为web项目设计的,与unity项目很难契合,所以我决定自己做一个简易的ORM映射.虽然想的很美但是实际做起来才发现还是挺复杂的,所以我在这里记录一下这次的开发过程,防止以后遗忘. 今天先记录一下如何通过自定义attribute类实…
Java中的Object类 一:什么是Object类: Object类是所有类的父类,相当于所有类的老祖宗,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类默认继承Object类. Object类中的方法,适合所有子类. 二:toString()方法: 在OBject类里面定义toString()方法的时候返回的对象的哈希code码(对象地址字符串). 如果我们在代码里直接输出一个对象,你会发现它输出的这个对象在内存中的地址,我们把它称为哈希码,它是通过哈希算法生成的一个…
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 7------------------- --触发器str_trigger创建后往std_table中添加数据 INSERT std_TABLE(姓名,专业方向,系部代码) VALUES('浅忆','计算机',02) --出错,当IDENTITY_INSERT 设置为OFF时,不能为表'std_table1' 中的标识列插入显式值. --解决办法,把目标表中的标识列改为…
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 5------------------- 28 聚合函数 --求平均分 SELECT AVG(高考分数) FROM std_table --求总和 SELECT SUM(高考分数) FROM std_table --求最低分 SELECT MIN(高考分数) FROM std_table --求最高分 SELECT MAX(高考分数) FROM std_table --…
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 11------------------- 现在,我们希望从 "City" 列中提取前 3 个字符.我们使用如下 SQL 语句: SELECT MID(City,1,3) as SmallCity FROM Persons 结果集类似这样:   16 LEN 函数返回文本字段中值的长度. 语法 SELECT LEN(column_name) FROM tabl…
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 10------------------- DECLARE @myavg float--定义平均分 SELECT @myavg=avg(writtenExam) FROM studentMars print '本班平均分'+convert(VARCHAR(5),@myavg) IF(@myavg>70) BEGIN PRINT '本班笔试成绩优秀,前三名的成绩是' SE…
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 9------------------- 删除约束的语法 ALTER TABLE 表名 DROP CONSTRAINT 约束名 6 创建登陆 --添加SQL登陆账户(用户账号:laiyu, 密码:1234) USE student GO EXEC SP_ADDLOGIN 'laiyu', '1234' 双击登录名laiyu后可以进行密码的修改等 7 创建数据库用户 需要…
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 8------------------- 3 范式的概念 第一范式的目标是确保每列的原子性. 如果每列都是不可再分的最小单元(也称为最小的原子单位.),则满足第一范式(1NF) 第二范式要求每个表只描述一件事情. 如果一个关系满足1NF,并且除了主键以外的其它列,都依赖该主键,则满足第二范式.(2NF) 第三范式 如果一个关系满足2NF,并且除了主键以外的其它列都不传递…
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 6------------------- 29 存储过程和触发器 存储过程由一组预先编辑好的SQL语句组成.将其放在服务器上.由用户通过指定存储过程的名称来执行. 触发器是一种特殊类型的存储过程,它不是由用户直接调用的,而是当用户对数据进行操作(包括数据的INSERT ,UPDATE,DELETE操作)时自动执行. 29.1创建.执行.删除简单的存储过程. CREATE…
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 4------------------- 21使用默认 默认(也称默认值),是一种数据对象,它与default(默认)约束的作用相同,也是当向表中插入数据时,没有为列输入值时,系统自动给列赋一个“默认值”.与default不同的是它类似规则,通过一次定义,可以多次使用 21.1创建默认 在查询分析器中,创建默认对象的语法 格式 CREATE DEFAULT defaul…
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 3------------------- 17 带比较运算符的嵌套查询 --查询学生表中出生日期大于名为小杰的出生日期的学生记录 SELECT * FROM 学生 WHERE 出生年月 > ( SELECT 出生年月 FROM 学生 WHERE 姓名= '小杰' ) --查询学生表中出生日期大于名为小杰或小小的出生年月的学生记录 SELECT * FROM 学生 WHE…
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 2------------------- 13. 使用compute对查询结果集中的所有记录进行汇总统计,并显示所有参加汇总的记录的详细信息. 格式: COMPUTE 聚合函数[列名]  --聚合函数,例如SUM (),AVG (),COUNT ()等 结合GROUP BY使用 示例: SELECT * FROM std_table GROUP BY 专业方向 COMP…
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 1------------------- 建立如下数据表 CREATE TABLE std_table1 ( 学号        INT PRIMARY KEY IDENTITY, 姓名        CHAR(20) NOT NULL, 专业方向     VARCHAR(10) NOT NULL, 系部代码     CHAR(2) NOT NULL, 备注      …
Sqlserver 学习笔记 by:授客 QQ:1033553122 1创建数据库 格式: CREATE DATABASE database_name ON PRIMARY(在组文件组中指定文件) ( name = ’数据库文件逻辑名’(在创建数据库后执行的T-SQL语句中引用文件的名称), fileName = ’数据库文件物理文件名’(含有具体位置,即具体路径(即存储位置)), size = 文件初始大小, maxsize = 文件可以增长到的最大大小(可以为:unlimited), fil…
QSqlQuery类提供了一个用于执行SQL语句和浏览查询的结果集的接口. QSqlQueryModel和QSqlTableModel类提供了一个用于访问数据库的高级接口,这将在下一节介绍.如果你不熟悉SQL,你可以直接使用下一节介绍的高级接口类. 1 执行一个查询 要执行一个SQL语句,简单的创建一个QSqlQuery对象,然后调用QSqlQuery::exec()方法即可,如下所示: QSqlQuery query; query.exec("SELECT name, salary FROM…
Struts2执行流程 1.简单执行流程,如下所示: 在浏览器输入请求地址,首先会被过滤器处理,然后查找主配置文件,然后根据地址栏中输入的/hello去每个package中查找为/hello的namespace,然后在包下寻找名为HelloAction的action,反射创建控制器HelloAction对象,调用method指定的方法hello,拿到返回值“success”,去result的配置节找success对应的页面(hello.js),呈现给用户. 2.Struts的架构,具体参考这里…
1.Struts2配置文件加载顺序: default.properties(默认常量配置) struts-default.xml(默认配置文件,主要配置bean和拦截器) struts-plugin.xml(配置插件) struts.xml(配置action或者常量等) struts.properties(常量配置) web.xml(配置JavaEE,如:监听器和过滤器) 2.Struts2配置文件详解 1)default.properties default.properties是Struts…
一.max()优化mysql> explain select max(payment_date) from payment;+----+-------------+---------+------+---------------+------+---------+------+-------+-------+| id | select_type | table   | type | possible_keys | key  | key_len | ref  | rows  | Extra |+-…
在EF中使用原生SQL,首先要创建上下文对象 using (var db = new Entities()) { //数据操作 } 新增 string sql = "insert into UserInfo values('zhangsan','123456')"; db.Database.ExecuteSqlCommand(sql); 参数化新增 sql = "insert into UserInfo values(@UserName,@UserPass)"; v…
oracle基本的SQL语句和SQLSERVER基本一样,在这里只简单列出与SQLSERVER不一样的地方 1.select * from orderinfo where address = 'abcd'  与 address = 'ABCD' 得到的结果是不一样的,也就是说oracle字符区分大小写,这一点特别要注意. 2.查询语句中,如果表引用了别名,则字段也必须的用别名.字段名 select orderid, ordercode from orderinfo o是一条错误的查询语句,正确的…
MongoDB学习笔记二 Mongoose Mongoose 简介 之前我们都是通过shell来完成对数据库的各种操作, 在开发中大部分时候我们都需要通过程序来完成对数据库的操作 而Mongoose就是一个让我们可以通过Node来操作MongoDB的模块 Mongoose是一个对象文档模型(ODM)库,它对Node原生的MongoDB模块进行了进一步的优化封装, 并提供了更多的共嗯那个 在大多数情况下, 它被用来把结构化的模式应用到一个MongoDB集合, 并提供了验证和类型转换等好处 Mong…
原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的皮毛, 然后就做别的事去了, 等回头再来看WPF的时候, 哈忘记了~ 于是写个例子补一下, 在继续学习Binding. 1, 首先准备好一个类 public class Hero { public Hero(int id, string name, string skill, bool hasM)…
AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了onreadyStateChange事件实现这一功能.这类似于回调函数的做法.onreadyStateChange事件可指定一个事件处理函数来处理XMLHttpRequest对象的执行结果,如: 复制代码 代码如下: ajaxObj=createAjaxObject(); var url="/MyTod…
源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证保持一个长连接也为推送消息提供 ======这段是一个以前同事给我的JAVA Socket验证机制的例子===========socket通信一般是找不到头这些的,要自定义封装通信消息类如开源框架netty,消息进出都有自定义加密和选择性压缩的socket不想http一样能找到某个方法,他就监听ip…
Notification通知,也可理解为消息,有通知,必然有发送通知的广播,JMX这里采用了一种订阅的方式,类似于观察者模式,注册一个观察者到广播里,当有通知时,广播通过调用观察者,逐一通知. 这里写一个简单的Server配置例子, 首先定义我们的MBean接口: 接着,我们会想第一节那样,去实现这个MBean接口,并且继承NotificationBroadcasterSupport,来提供广播服务: package com.dxz.mbean; import java.util.concurr…
java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新的解析一次, 第二种,即时解析,也就是转载到内存的字节码会被解析成本地机器码,并缓存起来以提高重用性,但是比较耗内存, 第三种,自适应优化解析,即将java将使用最贫乏的代码编译成本地机器码,而使用不贫乏的则保持字节码不变,一个自适应的优化器可以使得java虚拟机在80%-90%的时间里执行优化过的…
Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输出都是以流的形式保存的,流中保存的实际上全都是字节文件. 字节流和字符流 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件 在java.io包中操作文件内容的主要有两大类:字节流.字符流,两类都分为输入和输出操作.在字节流中输出…
<SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语句,但是实际应用中的业务逻辑往往会非常复杂,所以会用到一些比较复杂的查询,如子查询,联合查询. 1.子查询 当一个查询是另一个查询的条件时,称为子查询.但是说到子查询又不的不说它与嵌套查询两者的区别,下面一张图来说明 下面再用一条sql语句来说明他们的关系. 其中在查询中又分为嵌套子查询和相关子查询,他们之间…